2
respostas

Erro ao executar java -jar no Terminal do Mac

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: br/com/bytebank/banco/teste/TesteContas has been compiled by a more recent version of the Java Runtime (class file version 58.0), this version of the Java Runtime only recognizes class file versions up to 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)

Já vi várias pessoas relatando que, ao tentar executar o jar criado no Eclipse, dá erro no Terminal. Minha pergunta não é exatamente como resolver o erro. Pelo que eu percebi, é meio complicado, porque há incompatibilidade entre versões de não sei o quê. Na verdade, a minha pergunta é se isso acontecerá novamente mais para a frente no curso. Haverá outras oportunidades em que eu terei que usar o Terminal para abrir arquivos jar criados no Eclipse ou essa foi só uma curiosidade apresentada pelo Nico?

Para contextualizar, o Nico criou um arquivo bytebank-1.0-executavel.jar, aparentemente para mostrar que dava para abrir no Terminal e ter a mesma saída que aparece ao rodar o java no Eclipse.

2 respostas

Oi RAFAEL

Dependendo do curso Java que você fizer poderá haver a necessidade de rodar o jar pelo terminal sim. Para fins didáticos é mais comum rodar pelo eclipse, porém em um sistema real em produção (por exemplo) também é usado pelo terminal.

Sobre o erro, o código foi compilado usando a JDK na versão 14 mas você tentou rodar usando a JRE na versão 8, será necessário compilar o código usando o JDK 8, para isso você pode deixar instalado na sua máquina a mesma versão Java tanto para a JDK quanto para a JRE.

Até entendi isso. O problema é que eu não faço a menor ideia de como mudar a versão do JDK pra 8. No caso, eu baixei o Java há uns dois meses quando iniciei o curso, e as versões são as que foram baixadas naquele momento. Meio problemático não funcionar...

Inclusive, pelo que se percebe no fórum, basicamente todo mundo deve estar tendo esse problema. Podia haver em algum lugar de fácil acesso na Alura um tutorial de como solucionar esse problema. Para um iniciante, não é nem um pouco intuitivo o caminho para tornar compatíveis as versões de JDK e JRE.