/ / “ClassFormatError: Несумісне магічне значення” при спробі запуску файлу jar jar - java

"ClassFormatError: несумісне магічне значення" при спробі запустити файл jar jar - java

Я набрав "java -jar ShowTime.jar", і отримав це повідомлення про помилку:

Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 1347093252 in class file ShowTime
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

Як я можу це виправити? P.S. У мене є мак.

Відповіді:

18 за відповідь № 1

Клас Java повинен починатись із магічного (шістнадцяткового) значення 0xCAFEBABE (акуратне так). Ваша цінність 1347093252 є 0x504B0304 у шістнадцятковій, що, мабуть, є магічним значенням для ZIP-файлу (перші 2 байти в ASCII є PK для Філ Кац, творець формату ZIP). Баночка - це також zipfile btw, тому, ймовірно, ваша банка в значній мірі пошкоджена. Спробуйте відновити весь проект.


1 для відповіді № 2

Зазвичай це означає, що ви склали банкуновіша версія Java, ніж ви її використовували. Перевірте, чи використовується для компіляції та запуску однакова версія Java. Якщо це не усуне проблему, надайте додаткову інформацію, таку як команда компілятора та вихід java -version.