Jaudiotagger 라이브러리를 사용하여 Java 클래스를 만들었지 만 문제없이 실행됩니다. 나는 그때부터 항아리를 만들었고 NoClassDefFoundError를 얻었다. 여기에 그 방법이있다 :Jaudiotagger가있는 Jar 파일, NoClassDefFoundError
주 클래스 id3tag.java와 라이브러리 jaudiotagger-2.0.3.jar를 폴더에 넣고 명령 행을 사용하여 컴파일했다. 이 프로그램은 문제없이 원활하게 실행되었습니다.
javac -cp .;jaudiotagger-2.0.3.jar id3tag.java
java -cp .;jaudiotagger-2.0.3.jar id3tag
그런 다음 매니페스트와 jar 파일을 만들었습니다.
echo Main-Class: id3tag >manifest.txt
jar cvfm id3tag.jar manifest.txt id3tag.class jaudiotagger-2.0.3.jar
나는 다음과 같은 출력이있어 :
added manifest
adding: id3tag.class(in = 5952) (out= 2997)(deflated 49%)
adding: jaudiotagger-2.0.3.jar(in = 811441) (out= 740599)(deflated 8%)
내가 다음 jar 파일을 실행, 그리고 "A 자바 예외가 발생했습니다."있어요. 나는 또한 시도 :
java -jar id3tag.jar
그리고 출력을 가지고 :
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaudiotagger/tag/
FieldDataInvalidException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
at java.lang.Class.getMethod0(Class.java:2694)
at java.lang.Class.getMethod(Class.java:1622)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.jaudiotagger.tag.FieldDataInval
idException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 6 more
내가 다음 예외로 Jaudiotagger에서 사용되는 모든 오류 클래스 (모두)를 교체하고 항아리를 재현. 이제 다른 모든 jar 파일을 (Java (TM) Platform SE 바이너리를 사용하거나 명령 프롬프트에 id3tag.jar을 작성하여) 실행할 때와 동일한 결과가 발생합니다. 그러나 java -jar가 작동하고 런타임 오류가 발생했습니다.
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaudiotagger/audi
o/AudioFileIO
at id3tag.tagSong(id3tag.java:112)
at id3tag.tagAlbum(id3tag.java:82)
at id3tag.tagArtist(id3tag.java:40)
at id3tag.main(id3tag.java:170)
Caused by: java.lang.ClassNotFoundException: org.jaudiotagger.audio.AudioFileIO
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 4 more
전체 라이브러리가 저를 위해 똥을 내지 않는 것처럼 보입니다. 이 문제를 어떻게 해결할 수 있으며 java -jar없이 jar 파일을 실행하려면 어떻게해야합니까? ("x more"라고 말하는 것보다 사람이 필요로하는 경우 전체 pile'o'errors를 얻으려면 어떻게해야합니까?)
저는이 종류의 똥에 대해 잘 알지 못합니다. 대답은 더 좋다. 감사.
저는 윈도우 8과 최신 자바 (1.7.0_17)입니다.
메모 만 들어 있습니다. 최신 자바 릴리스가 아닙니다. –
이상합니다. 여러 번 설치했는데 웹 사이트에서 최신 버전을 가지고 있고 설치 프로그램의 이름은 chromeinstall-7u51.exe이지만 java -version을 입력하면 1.7.0_17이됩니다. – Blrp
Java 버전에서 클래스 경로가 잘못 설정된 경우 문제가 발생하지 않습니다. –