Java 通过Maven依赖项导入hikaricp后出现NoClassDefFoundError

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</

在spiget上启动java插件时,我遇到了
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.