Maven .jar语言 - java.lang.ClassNotFoundException: com.microsoft



我正在开发一个程序,将数据从MS SQL服务器上传到MySQL服务器。在IntelliJ中,该程序可以顺利运行。当我用Maven将其导出到.jar时,会出现以下错误:

java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver

my pom.xml:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.14</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.4.1.jre8</version>
</dependency>

我的数据库连接:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

由于您提到您的应用程序似乎在IntelliJ中工作,但不是在使用Maven创建JAR时,所以您的JAR可能不包含依赖项,而只包含您创建的类和代码。

我通常用两种方法来解决这个问题:

  1. 使用maven shade插件创建一个shaded(uber(JAR,该JAR包含您的依赖项以及单个JAR中的代码。您可以在插件的文档页面上找到更多信息:https://maven.apache.org/plugins/maven-shade-plugin/usage.html

  2. 运行JAR时使用显式类路径。例如,java -cp <YOUR CLASSPATH> your.package.MainClass将使用自定义类路径运行您的应用程序。<YOUR CLASSPATH>应该替换为包含JAR和依赖JAR的路径。以下是一个很好的答案,描述了如何在Windows和Linux上使用此方法:使用java的自定义类路径。your.package.MainClass应该替换为主类的类名。除此之外,可能还有其他选择。

最新更新