bnd 실행 프로그램을 실행하는 데 문제가 있습니다. 실제 문제는 gradle을 사용하여 빌드하는 동안 발생했지만 병을 직접 호출해도 작동하지 않습니다. Launcher 클래스는 실제로 해당 jar 파일에 존재하며 main 메소드를 가지고 있습니다. 누구나 왜이 오류가 발생했는지 알 수 있습니까?존재하는 동안 주 클래스를 찾을 수 없습니다.
$ java -cp cnf/cache/biz.aQute.launcher/biz.aQute.launcher-1.4.0.jar aQute.launcher.Launcher
Error: Could not find or load main class aQute.launcher.Launcher
jar의 내용을 읽을 때 Launcher 클래스가 실제로 있음을 알 수 있습니다.
$ jar tvf cnf/cache/biz.aQute.launcher/biz.aQute.launcher-1.4.0.jar
1490 Fri Sep 26 06:49:00 CEST 2014 META-INF/MANIFEST.MF
...
1586 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$1.class
2270 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$2.class
794 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$3.class
1133 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$4.class
1100 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$5.class
1260 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$AllPermissionCollection.class
1149 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher$AllPolicy.class
37566 Fri Sep 26 06:49:00 CEST 2014 aQute/launcher/Launcher.class
...
또 다른 임의의 jar 파일에서 다른 임의의 클래스를로드하려고 시도했지만 작동하지 않습니다. main 메서드가없는 경우에만 다른 오류가 발생합니다 (클래스에서 Main 메서드를 찾을 수 없음).
또한이 모든 파일에 대한 권한이 동일합니다. 그렇지 않으면 'jar tvf'도 실행할 수 없습니다.
그래서 어떤 아이디어입니까?
jar에는 필요한 모든 클래스가 포함되어 있습니까? 발견되지 않은 다른 클래스를 요구하는 클래스는 이와 같은 오류를 유발할 수 있습니다. –
전체 스택 추적을 게시하십시오. –
스택 추적이 없습니다. 이 메시지 만. Java에 -verbose 옵션을 추가하면 rt.jar에서로드되는 클래스 만 표시됩니다. – Marc