/ / “ClassFormatError: Incompatible magic value” ao tentar executar o arquivo jar do Java - java

“ClassFormatError: Valor mágico incompatível” ao tentar executar o arquivo jar do Java - java

Eu digitei "java -jar ShowTime.jar" e recebi esta mensagem de erro:

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)

Como devo consertar isso? P.S. Eu tenho um mac.

Respostas:

18 para resposta № 1

Uma classe Java deve começar com o valor mágico (hex) 0xCAFEBABE (puro né). Seu valor 1347093252 é 0x504B0304 em hexadecimal, que é o valor mágico de um arquivo ZIP (os primeiros 2 bytes em ASCII são PK para Phil Katz, criador do formato ZIP). Um jarro também é um zipfile btw, então provavelmente o seu jarro é bastante corrupto. Tente reconstruir o projeto inteiro.


1 para resposta № 2

Isso geralmente significa que você compilou o jar parauma versão mais recente do java do que você o executou. Verifique se você está usando a mesma versão do java para compilar e executar. Se isso não corrigir o problema, forneça mais informações, como o comando do compilador e a saída do java -version.