我正在尝试使用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中,而依赖项位于子poms中(尽管我也尝试将插件也放入DB模块POM中,但无济于事。)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
在寻求解决方案时,我在命令行上将-cp添加到了下载的jar中,但是找不到连接器!整个程序可以在我的IDE中正常运行,没有问题。
我已经阅读了有关Shade的其他几篇文章,从中我从来没有找到一个足够清晰的答案(对我来说足够清晰(请无评论)!)答案通常是使用Assembly plugin规定的。但是,我想坚持使用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/