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

问题描述 投票:0回答:1

在spigot上启动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>

似乎hikari不会编译到jar中,但是我可以在编码时使用其资产。

代码:

import com.zaxxer.hikari.HikariDataSource;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

import java.sql.*;

    public class Main extends JavaPlugin {

    //DataBase vars.
    public String username, password, database, host, properties, table; //db variables
    public int port; //db variable

    //Connection vars
    private HikariDataSource hikari;

    @Override
    public void onEnable() {
        getLogger().info("onEnable is called!");
        loadConfig();

        new BukkitRunnable(){
            @Override
            public void run(){
                connectToDatabase();
            }
        }.runTaskAsynchronously(this);

        this.getServer().getPluginManager().registerEvents(new SetterGetter(), this);
    }
    @Override
    public void onDisable() {
        getLogger().info("onDisable is called!");
    }


    public synchronized void connectToDatabase() {
        //Database details
        String address = getConfig().getString("Database.address");
        String name = getConfig().getString("Database.Name");
        String username = getConfig().getString("Database.username");
        String password = getConfig().getString("Database.password");
        int port = getConfig().getInt("Database.port");

        //Initialise hikari instace
        hikari = new HikariDataSource();

        //Setting Hikari properties
        hikari.setMaximumPoolSize(10);
        hikari.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
        hikari.addDataSourceProperty("serverName", address);
        hikari.addDataSourceProperty("port", port);
        hikari.addDataSourceProperty("databaseName", name);
        hikari.addDataSourceProperty("user", username);
        hikari.addDataSourceProperty("password", password);
    }

    public void loadConfig() {
        getConfig().options().copyDefaults(true);
        saveConfig();
    }
}

缺少详细信息?询问,我将看到我能做什么。

java maven minecraft hikaricp
1个回答
0
投票

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

我知道您可能正在使用自己的关系,该jar文件在maven Central中可用。我为此在mvn存储库链接中提供此信息。

https://mvnrepository.com/artifact/com.zaxxer/HikariCP/3.4.0

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.