Maven Shade를 사용하여 Uber Jar를 빌드하려고합니다. 모든 것이 작동하고 있습니다. 빌드를하면 BAT 파일에서 실행중인 uber 항아리가 만들어집니다. 비 데이터베이스 작업은 정상적으로 실행되지만 어떤 이유로 MySQL-Connector가 클래스 경로에서 발견되지 않습니다. Maven-Shade MySQL 클래스 없음
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=
받는다는 플러그인
내 부모 POM에있는, 그리고 종속성, 아이 리딩에 (내가 아무 소용이, 너무 DB 모듈 POM의 플러그인을 넣어 해봤지만.)<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
해결책을 찾으면서 명령 줄에서 다운로드 한 jar에 -cp를 추가했지만 커넥터를 찾을 수 없습니다! 전체 프로그램은 내 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 파일에 mysql 패키지가 있는지 확인하십시오. 그것이 당신이 알지 못하면 플러그인 구성 문제입니다. – dimoniy
@dimoniy Maven-shade-plugin을 사용하지 않는 이유는 무엇입니까? 무슨 일이야? – khmarbaise
동일한 문제가 있습니다. 어셈블리와 셰이드 플러그인 모두에서 발생합니다. 내 프로젝트에는 java.sql.Driver 구현이 1 개만 있습니다. META-INF/services/java.sql.Driver가 존재하고 정확합니다. 내 기본 진입 점의 첫 번째 줄에 Class.forName ("com.mysql.jdbc.Driver")을 추가하면 예외는 없지만 문제는 해결되지 않습니다. – Gert