我正在尝试使用 Maven Shade 构建 Uber Jar。一切正常,它构建了 uber jar,我从 BAT 文件运行它:非数据库内容运行良好,但由于某种原因,在类路径上找不到 MySQL-Connector。
2014-09-08 17:14:00 DEBUG DatabaseConnectionFactory:47 - Creating a new database connection
2014-09-08 17:14:00 ERROR DatabaseConnectionFactory:53 - java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/myDB?user=root&password=
maven 插件位于我的父 POM 中,依赖项位于子 pom 中,(尽管我也尝试将插件放入数据库模块 POM 中,但无济于事。)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
在寻求解决方案时,我在命令行上将 -cp 添加到下载的 jar 中,但找不到连接器!整个程序在我的 IDE 中运行良好,没有任何问题。
我读过其他几篇涉及 Shade 的帖子,从中我从未找到足够清晰的(对我来说足够清晰(请不要评论)答案!)通常使用程序集插件规定的答案。不过,我想坚持使用 Shade,因为它让一切变得简单。
我在下面添加了一个删减的 POM,希望有人能帮助我!
非常感谢!
<execution>
<id>myClient</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<outputFile>C:\Dev\myJar.jar</outputFile>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>myapp.ClientStart</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>properties/**</exclude>
<exclude>images/**</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
最佳答案
检查您的阴影 JAR 是否包含包含内容的资源 META-INF/services/java.sql.Driver
com.mysql.jdbc.Driver
如果没有,您的依赖项中可能有其他 JDBC 驱动程序取代了 MySQL 资源。
关于java - Maven-Shade MySQL 类未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25728855/