Maven 사용 프로젝트를 하나의 큰 dependecy를 제외한 모든 종속성을 포함하는 JAR로 컴파일했습니다. 종속성외부 클래스 경로로 실행 가능한 JAR 실행
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.mypackage.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
제외가 <scope>provided</scope>
myjar.jar
가 BigExternalJar.jar
같은 폴더에 대상으로 수행하지만, 내가하려고 할 때 실행 : 다음 dependecies의 포함을 사용하여 수행됩니다
java -cp ".:BigExternalJar.jar:myjar.jar" -jar myjar.jar
누락 된 클래스 (해당 클래스는 BigExternalJar.jar
)에 대한 예외가 발생합니다.
Maven 전용을 사용하여 의 JAR에 종속성을 팩 할 수는 있지만 클래스 패스에 추가 JAR를 추가 할 수 있습니까? BigExternalJar
은 MANIFEST 파일에 수동으로 추가 할 수 없으므로 항상 같은 폴더에있는 것은 아닙니다.
중복되는 두 가지 유사한 질문이 있지만이 상황에 대한 대답이 없습니다. 당신이
-jar
옵션을 사용하는 경우 Eclipse: How to build an executable jar with external jar? 및 Running a executable JAR with external dependencies
는 사용하지 않는 포장 된 항아리에있을 것입니다 모든 외부 항아리 ~~~ 시도; :) 대신 클래스 경로 항목을 구분 하시겠습니까? –
'java -cp ... com.mypackage.Main'. -jar는 다음을 의미합니다. -cp를 무시하고 manifest에 지정된 클래스 경로를 사용합니다. –
@JBNizet 감사. 그렇다면 jar 파일 내부에 몇 가지 종속성을 가질 수는 없다는 결론을 내리고 결론을 내릴 것입니다. 옳은? –