我正在尝试使用Maven Shade来构建Uber Jar。一切正常,它构建了超级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中(虽然我已尝试将插件插入数据库模块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>
答案 0 :(得分:2)
检查您的着色JAR是否包含内容为
的资源META-INF/services/java.sql.Driver
com.mysql.jdbc.Driver
如果没有,那么您的依赖项中可能会有一些其他JDBC驱动程序取代MySQL资源。