Após a atualização de software automática mais recente, o java 7 em 14.04 não funciona mais. O problema inicial é o mesmo descrito em "Como atualizar o compilador Java".
Esta é a mensagem que recebemos:
warning: Blabla.class: major version 52 is newer than 51, the highest major version supported by this compiler.
it is recommended that the compiler be upgraded.
A solução dada lá foi sugerida depois que o questionador deu os resultados de "javac -version" e "java -version" - estes dois não eram os mesmos.
No meu caso, a saída dessas consultas parece ser a mesma. Aqui estão eles, caso eu esteja perdendo alguma coisa:
javac -version
javac 1.7.0_95
java -version
versão java "1.7.0_95"
Ambiente de tempo de execução do OpenJDK (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.14.04.2)
OpenJDK 64-Bit Server VM (compilação 24.95-b01, modo misto)
executando
"sudo update-alternatives --config javac"
mostrou três alternativas. Eu tentei todos os três e nenhum funcionou. Então, eu removi completamente todo o java do sistema (seguindo as instruções em "Como desinstalar completamente o java".) Eu instalei o java 7 do site da Oracle. Enquanto a mensagem de erro original ainda ocorre e não consigo executar um programa compilado, agora há apenas uma alternativa após
"sudo update-alternatives --config javac"
diz:
Há apenas uma alternativa no javac do grupo de links (fornecendo / usr / bin / javac): / usr / lib / jvm / java-7-openjdk-amd64 / bin / javac
Nada para configurar.
Para completar, aqui está o que acontece quando tento compilar / executar um programa que estava funcionando pouco antes da atualização automática:
lanzcc @ ubuntu910: ~ / recruit $ javac ReadProgram.java
aviso: ./Program.class: a versão principal 52 é mais recente que 51, a maior versão principal suportada por este compilador.
Recomenda-se que o compilador seja atualizado.
1 aviso
lanzcc @ ubuntu910: ~ / recrutar $ java ReadProgram
Exceção no thread "main" java.lang.UnsupportedClassVersionError: Programa: versão major.minor não suportada 52.0
em java.lang.ClassLoader.defineClass1 (método nativo)
em java.lang.ClassLoader.defineClass (ClassLoader.java:803)
em java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142)
em java.net.URLClassLoader.defineClass (URLClassLoader.java:449)
em java.net.URLClassLoader.access $ 100 (URLClassLoader.java:71)
em java.net.URLClassLoader $ 1.run (URLClassLoader.java:361)
em java.net.URLClassLoader $ 1.run (URLClassLoader.java:355)
em java.security.AccessController.doPrivileged (método nativo)
em java.net.URLClassLoader.findClass (URLClassLoader.java:354)
em java.lang.ClassLoader.loadClass (ClassLoader.java:425)
em sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:308)
em java.lang.ClassLoader.loadClass (ClassLoader.java:358)
em java.lang.Class.getDeclaredMethods0 (método nativo)
em java.lang.Class.privateGetDeclaredMethods (Class.java:2625)
em java.lang.Class.getMethod0 (Class.java:2866)
em java.lang.Class.getMethod (Class.java:1676)
em sun.launcher.LauncherHelper.getMainMethod (LauncherHelper.java:494)
em sun.launcher.LauncherHelper.checkAndLoadMain (LauncherHelper.java:486)
lanzcc @ ubuntu910: ~ / recruit $
Alguma idéia?
OBRIGADO!