Maven-Shade MySQL classnotfound

时间:2014-09-08 16:28:15

标签: java maven mysql-connector

我正在尝试使用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>

1 个答案:

答案 0 :(得分:2)

检查您的着色JAR是否包含内容为

的资源META-INF/services/java.sql.Driver
com.mysql.jdbc.Driver

如果没有,那么您的依赖项中可能会有一些其他JDBC驱动程序取代MySQL资源。