在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();
}
}
缺少详细信息?询问,我将看到我能做什么。
@@ 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