java - Maven-Shade MySQL 类未找到

标签 java maven mysql-connector

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

相关文章:

java - 使用exe文件保护Jar文件源代码(Java)

java - 为什么 web.xml 中的 servlet 配置有 1 个额外级别?

java - 如何将 Maven 生成的 GAE 框架转变为 2 模块应用程序?

java - 从命令行运行 Apache CXF 客户端

java - 使用 mysql connector-j 时出错

c# - 在开始另一个事务之前等待其他事务提交/回滚?

java - 什么时候字符串在Java中是不同的对象?

java - 尝试使用 VBO "array vertex_buffer_object must be disabled to call this method"时出错

maven - 为什么 mvn 释放 :perform always create a new snapshot version and upload that to the repository instead of the non-snapshot release version?

python - 莫名其妙的python mysql连接问题