gpt4 book ai didi

java - 通过Maven依赖导入hikaricp后出现NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 23:45:09 26 4
gpt4 key购买 nike

在 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();
}
}

粘贴箱中的完整崩溃报告,以便于查看: https://pastebin.com/JEMz0f6T

我尝试使用 hikaricp 创建独立程序:代码:

package test;

import com.zaxxer.hikari.HikariDataSource;

public class Main
{
public static void main(String[] args) {
HikariDataSource hikari = new HikariDataSource();

//Setting Hikari properties
hikari.setMaximumPoolSize(10);
hikari.setDriverClassName("com.mysql.jdbc.Driver");
hikari.setJdbcUrl("jdbc:mysql://" + "localhost" + ":" + "3306" + "/" + "plugin");
hikari.setUsername("Server1");
hikari.setPassword("227VU07dickCQjav");
}
}

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>

堆栈跟踪:https://pastebin.com/fNQ7EFnQ

我在 Hikaricp Github 上发布了一个问题,它可能不适合放在那里,因为这似乎只是我的问题,但是嘿!也许他能帮忙。我不知道为什么会发生这种情况,我怀疑其他人可以很好地遵守 HikariCP,问题是为什么它对我不起作用......

编辑:似乎以前发生过类似的事情:

https://www.spigotmc.org/threads/hikaricp-with-spigot-not-importing-with-the-jar.246851/检查我是否可以使用此信息自行解决问题。

好的,通过将新参数添加到我的 pom.xml 我现在已经删除了NoClassDefFoundError 现在已经得到这个:https://pastebin.com/9DU9Tqra

但是,嘿,这是一个警告,而不是故障转储。这意味着它有效!

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

最佳答案

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

我知道你可能正在使用你的Nexus,这个jar文件可以在mavencentral中找到。我在下面提供了 mvn 存储库链接。

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

enter image description here

关于java - 通过Maven依赖导入hikaricp后出现NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58243316/

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