在最近的自动软件更新之后,14.04 上的 Java 7 不再起作用。最初的问题与“如何升级 Java 编译器”中描述的问题相同。
以下是我们收到的消息:
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.
那里给出的解决方案是在提问者给出“javac -version”和“java -version”的输出后提出的 - 这两个并不相同。
就我而言,这些查询的输出似乎相同。如果我遗漏了某些内容,请看以下输出:
javac-版本
javac 1.7.0_95
java -版本
Java 版本“1.7.0_95”
OpenJDK 运行时环境(IcedTea 2.6.4)(7u95-2.6.4-0ubuntu0.14.04.2)OpenJDK 64 位服务器 VM(版本 24.95-b01,混合模式)
执行
“sudo 更新替代方案——config javac”
显示了三种替代方案。我尝试了所有三种方案,但都不起作用。然后我从系统中完全删除了所有 java(按照“如何完全卸载 java”中的说明操作)。然后我从 Oracle 站点安装了 java 7。虽然原始错误消息仍然出现,并且我无法运行已编译的程序,但现在只有一个替代方案
“sudo 更新替代方案——config javac”
它说:链接组 javac(提供 /usr/bin/javac)中只有一个替代方案:/usr/lib/jvm/java-7-openjdk-amd64/bin/javac 无需配置。
为了完整起见,以下是我尝试编译/运行自动更新之前正在运行的程序时发生的情况:
lanzcc@ubuntu910:~/recruit$ javac ReadProgram.java
警告:./Program.class:主版本 52 比 51 新,后者是此编译器支持的最高主版本。建议升级编译器。1 警告
lanzcc@ubuntu910:~/recruit$ java 读取程序
线程“main”中出现异常 java.lang.UnsupportedClassVersionError: 程序:不支持 major.minor 版本 52.0 在 java.lang.ClassLoader.defineClass1(Native Method) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:803) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:71) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2625) at java.lang.Class.getMethod0(Class.java:2866) at java.lang.Class.getMethod(Class.java:1676) at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) lanzcc@ubuntu910:~/recruit$
有任何想法吗?
谢谢!
答案1
解决
在各种类文件中,有一个自软件升级以来没有编译过。我知道所有其他文件都在重新编译,但我就是没注意到这个。因此它有一个不匹配的编译器标签。
对不起。