Java 通过Maven依赖项导入hikaricp后出现NoClassDefFoundError
在spiget上启动java插件时,我遇到了Java 通过Maven依赖项导入hikaricp后出现NoClassDefFoundError,java,maven,minecraft,hikaricp,Java,Maven,Minecraft,Hikaricp,在spiget上启动java插件时,我遇到了java.lang.NoClassDefFoundError:com/zaxxer/hikari/HikariDataSource错误。据我所知,我已经正确地导入了它 我知道这个问题已经被贴了很多次了,但是通过查看3-4,我没有看到任何关于错误的明确答案。 代码在hikari=new HikariDataSource()处崩溃,这也是使用的第一条hikari语句 我的Pom <groupId>drhampust.github.io</
java.lang.NoClassDefFoundError:com/zaxxer/hikari/HikariDataSource
错误。据我所知,我已经正确地导入了它
我知道这个问题已经被贴了很多次了,但是通过查看3-4,我没有看到任何关于错误的明确答案。
代码在hikari=new HikariDataSource()
处崩溃,这也是使用的第一条hikari语句
我的Pom
<groupId>drhampust.github.io</groupId>
<artifactId>Blank</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshot/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.14.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
粘贴箱中的完整崩溃报告,便于查看:
我尝试使用hikaricp创建独立程序:
代码:
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Test</groupId>
<artifactId>Test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>test.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
4.0.0
试验
我已经在Hikaricp Github上发布了一个问题,它可能不适合那里,因为它似乎只是我的问题,但是嘿!也许他能帮忙。
我不知道为什么会发生这样的事情,我怀疑其他人可以很好地解决这个问题,问题是为什么它对我不起作用
编辑:以前似乎也发生过类似的事情:
检查是否可以使用此信息解决问题
好的,通过将新参数添加到pom.xml中,我现在删除了
NoClassDefFoundError,现在已获得以下信息:
但是,嘿,这是一个警告,不是撞车。这意味着它成功了
遗漏的细节?询问,我会看看我能做些什么。@Hampus,我已经尝试并检查了在Hicari Pool的3.4.0版本中,com.zaxxer.hikari.HikariDataSource类在com/zaxxer/hikari包中是否可用。你可以看到下面的截图。我怀疑的是您添加的存储库。请从pom.xml中删除以下内容并重试
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshot/</url>
</repository>
</repositories>
插销式回购
https://hub.spigotmc.org/nexus/content/repositories/snapshot/
我知道您可能正在使用nexus,这个jar文件在maven central中提供。我在下面提供了mvn存储库链接
问题是NoClassDefFoundError
是什么修好的?我在spigotmc上的一篇帖子中修复了它:
并补充说:
<build>
<finalName>${project.name}</finalName>
<defaultGoal>clean package</defaultGoal>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</plugin>
</plugins>
</build>
然而,这与原来的问题无关。
除非有人找到更好的解决方案,否则我会选择这个作为答案。请添加您的代码和导入内容。您可以添加Google guice版本4.0并尝试吗?@Sambit我将Google guice版本4.0添加到依赖项中,但我仍然得到java.lang.NoClassDefFoundError:com/zaxxer/hikari/HikariDataSource
您能发布吗这里完整的异常详细信息?在删除pom中的存储库行后,我仍然得到NoClassDefFoundError,我甚至尝试在hikaricp上返回几个版本,并使用最新版本的google guice,但没有结果。请提供完整的stacktrace。你需要的不仅仅是pastebin中的内容吗?告诉我,你能完成这个项目吗?如果是这样,那么导出的jar的问题可能与您正在运行的容器有关。对于小型litmus测试,使用Hicari数据源编写一个独立程序,并检查是否能够调用这些方法。我可以将其编译成一个jar,当我编写一个独立程序时,仅包含一个带有6行hikari行的主方法,我得到相同的NoClassDefFoundError,它将编辑主帖子以添加代码。
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshot/</url>
</repository>
</repositories>
<build>
<finalName>${project.name}</finalName>
<defaultGoal>clean package</defaultGoal>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</plugin>
</plugins>
</build>
[23:02:45] [Craft Scheduler Thread - 0/WARN]: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
[23:02:45] [Craft Scheduler Thread - 0/WARN]: SLF4J: Defaulting to no-operation (NOP) logger implementation
[23:02:45] [Craft Scheduler Thread - 0/WARN]: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.