'outer.jar'파일에 기본 클래스가 있습니다. 이 항아리 안에는 classes/lib 폴더에 'inner.jar'라는 다른 항아리가 있습니다. java -jar outer.jar
명령을 사용하여 외부 jar를 실행할 때 내부 Jar을 실행하려면 어떻게해야합니까?외부 jar을 실행하면 내부 jar을 실행해야합니다
내 메인 클래스가 'inner.jar'라는 다른 항아리를 실행하고 출력을 소비하고 있습니다. 이제 내 응용 프로그램은 또한 'outer.jar'이라는 병으로 포장하고, 나는이 'outer.jar'를 실행하면, 다음 주 클래스는 inner.jar를 실행할 수 없습니다
외부 항아리 메인 클래스 코드 :
public class OuterJarMain{
public static void main(String[] args) {
String path = OuterJarMain.class.getProtectionDomain().getCodeSource().getLocation().getPath();
ProcessBuilder pb = new ProcessBuilder("java", "-jar", path.substring(1)+"lib/inner.jar", "1");
try {
Process p = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
inner.jar
이 target/classes/lib 폴더에서 사용 가능하므로 주 클래스를 IDE에서 실행할 때 코드가 제대로 작동합니다. 그러나 명령 행에서 outer.jar을 실행하면 경로는 /C:/....../outer.jar!/.../classes!/
으로 표시되고 inner.jar은 실행되지 않습니다.
안녕하세요, 내부 항아리의 기본 클래스를 외부 항아리의 일부 폴더로 내 보내야합니까? 방금 내부 항아리를 트리거하고 outerjarmain.class의 process.getInputStream()을 사용하여 출력을 사용하려고합니다. – firstpostcommenter
전체 내부 항아리를 내보내고 실행해야합니다. – Judger
이 접근 방식은 내보낼 폴더를 알지 못하기 때문에 linux, docker 등에서 사용할 수 있습니까? – firstpostcommenter