我制作了一个小型桌面应用程序,并使用 MySQL 连接器来处理数据库。之前我已经将 MySQL 连接器添加到类路径中。
之后,我添加了 mysql 连接器依赖项:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
构建成功,但是当我从命令行启动 .jar 文件时,出现此错误:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
当我用 java -cp mysql-connector-java-5.1.29.jar -jar NameOfJar.jar
启动我的程序时,没有问题,程序正常启动,但理想情况下我会喜欢“打包”连接器或拥有“lib”文件夹,而不是键入 java -cp mysql [...]
(双击文件打开应用程序)。
谢谢, 超速301
最佳答案
或者,您也可以使用阴影插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>org.slf4j*</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
它会创建一个额外的 jar,其中包含所有依赖项,但您明确排除的依赖项除外,如上例所示 (org.slf4j*)。请注意,这会将您的常规 jar 替换为包含所有依赖项的更胖的 jar。如果两者都需要,则应使用 maven-assembly
关于java - Maven 和 Java 的 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271770/