使用 Maven Spigot 编译 mysql 依赖
Compiling mysql dependincy with maven Spigot
我个人更喜欢将我的编码问题放在此处,除非我觉得自己被难住了。我正在尝试将 mysql java 依赖项添加到我的项目中(我正在编写 Minecraft-Spigot 1.12.2 插件)。
多年来我一直在编写 MySQL,但直到现在我还从未将它与 Java 一起使用,所以我正在学习本教程:https://www.spigotmc.org/wiki/connecting-to-databases-mysql/
将我重定向到此页面:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.26
添加 Maven dep 很简单,你只需复制并粘贴即可!除此之外,我不太了解系统的内部运作方式。
每当我编译(它实际上编译而不会引发任何问题)并将其上传到我的服务器时,我都会收到此错误:java.lang.NoClassDefFoundError: com/mysql/cj/jdbc/MysqlDataSource
。现在,我知道这与 class 未定义或其他原因有关。很明显,我搜索了错误代码。我看到的很多问题似乎并不适用于我。
我仔细检查了一下,确实在我的 IDE (InteliJ IDEA)
的“外部库”部分看到了 mysql-connector-java
我也看到有人发这个link:How can I create an executable JAR with dependencies using Maven?
其中,答案似乎也没有帮助我(除非我错过了什么)。
我希望有人可以通过发送我的文件来帮助我吗?
我看到有人提到 class 路径可能有问题?我究竟该如何解决这个问题(如果这是问题所在)。我似乎找不到任何可以帮助我解决这个问题的东西(虽然在这种情况下 classpath 有点让我头疼。Def 想在未来更多地阅读它)。
这是我的 pom.xml
任何有用的帮助都将不胜感激!
<?xml version="1.0" encoding="UTF-8"?>
<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>com.example</groupId>
<artifactId>example</artifactId>
<version>1.12.2-SNAPSHOT</version>
<packaging>jar</packaging>
<name>example</name>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
<repository>
<id>dmulloy2-repo</id>
<url>https://repo.dmulloy2.net/repository/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.12.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>4.6.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
</project>
您是否使用了正确的 SNAPSHOT jar?因为那应该对你有用
jar tf <the snapshot>.jar | find "com/mysql/cj/jdbc/MysqlDataSource"
在 Windows 或
jar tf <the snapshot>.jar | grep "com/mysql/cj/jdbc/MysqlDataSource"
on *nix 应该在 jar
中找到 'missing' class
我个人更喜欢将我的编码问题放在此处,除非我觉得自己被难住了。我正在尝试将 mysql java 依赖项添加到我的项目中(我正在编写 Minecraft-Spigot 1.12.2 插件)。 多年来我一直在编写 MySQL,但直到现在我还从未将它与 Java 一起使用,所以我正在学习本教程:https://www.spigotmc.org/wiki/connecting-to-databases-mysql/
将我重定向到此页面:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.26 添加 Maven dep 很简单,你只需复制并粘贴即可!除此之外,我不太了解系统的内部运作方式。
每当我编译(它实际上编译而不会引发任何问题)并将其上传到我的服务器时,我都会收到此错误:java.lang.NoClassDefFoundError: com/mysql/cj/jdbc/MysqlDataSource
。现在,我知道这与 class 未定义或其他原因有关。很明显,我搜索了错误代码。我看到的很多问题似乎并不适用于我。
我仔细检查了一下,确实在我的 IDE (InteliJ IDEA)
的“外部库”部分看到了mysql-connector-java
我也看到有人发这个link:How can I create an executable JAR with dependencies using Maven? 其中,答案似乎也没有帮助我(除非我错过了什么)。
我希望有人可以通过发送我的文件来帮助我吗? 我看到有人提到 class 路径可能有问题?我究竟该如何解决这个问题(如果这是问题所在)。我似乎找不到任何可以帮助我解决这个问题的东西(虽然在这种情况下 classpath 有点让我头疼。Def 想在未来更多地阅读它)。
这是我的 pom.xml
任何有用的帮助都将不胜感激!
<?xml version="1.0" encoding="UTF-8"?>
<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>com.example</groupId>
<artifactId>example</artifactId>
<version>1.12.2-SNAPSHOT</version>
<packaging>jar</packaging>
<name>example</name>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
<repository>
<id>dmulloy2-repo</id>
<url>https://repo.dmulloy2.net/repository/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.12.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>4.6.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
</project>
您是否使用了正确的 SNAPSHOT jar?因为那应该对你有用
jar tf <the snapshot>.jar | find "com/mysql/cj/jdbc/MysqlDataSource"
在 Windows 或
jar tf <the snapshot>.jar | grep "com/mysql/cj/jdbc/MysqlDataSource"
on *nix 应该在 jar
中找到 'missing' class