gpt4 book ai didi

java - dropwizard异常: java. lang.NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 11:24:53 25 4
gpt4 key购买 nike

我有一个示例 dropwizard 应用程序。我收到以下异常:

>java -jar target/order-service-1.0.0-SNAPSHOT.jar

Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/engine/jdbc/connections/spi/ConnectionProvider
at io.dropwizard.hibernate.HibernateBundle.<init>(HibernateBundle.java:20)
at com.blurb.order.OrderApplication$1.<init>(OrderApplication.java:61)
at com.blurb.order.OrderApplication.<init>(OrderApplication.java:52)
at com.blurb.order.OrderApplication.main(OrderApplication.java:133)
Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.jdbc.connections.spi.ConnectionProvider
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more

如何解决此异常?

编辑

以下是 Maven Shade 插件的配置:

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.*.order.OrderApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>

最佳答案

解决此类问题的方法如下:

  1. 找出缺少的类(在本例中:org/hibernate/engine/jdbc/connections/spi/ConnectionProvider)应该在哪里。通常您可以从包名称中看出。这个似乎来自hibernate,所有专业的,找到此类服务的jar失败了,但是谷歌搜索发现了这个:https://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/engine/jdbc/connections/spi/class-use/ConnectionProvider.html ,因此您应该检查该类的 hibernate-*.jar。

  2. 如果您没有下载/指定该 jar 包包含在您的应用程序中,那么您显然必须立即添加它,然后就完成了。

  3. 通常您认为您在类路径中拥有它,但由于某种原因您没有。在这种情况下,首先要获取类路径。根据您的环境,这可能会很棘手。在简单的桌面应用程序中,您可以使用系统属性 java.class.path 来实现此目的。在应用程序服务器和类似环境中,这有点复杂。您可能必须调试类加载器,才能找到它们实际查找的位置。通常,您可以通过使用您假设正在使用的类路径来走捷径,但如果相关类位于假设的类路径中并且仍然没有显示,则此步骤会有所帮助。

    <
  4. 确保您的 jar 确实已添加到类路径中。还要注意微小的差异。某些库已更改其包名称,因此错误版本的 jar 可能具有与您要加载的类非常相似的类,但只是位于错误的包中。

关于java - dropwizard异常: java. lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30900937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com