【问题标题】:UnsupportedClassVersionError jdk 1.8UnsupportedClassVersionError jdk 1.8
【发布时间】:2016-07-21 19:19:26
【问题描述】:

当我运行我的项目时,我收到以下错误。我的jdk目前是1.8。为了修复它,我尝试重置 jdk,降级到 1.7,我检查了我的构建路径,我进入了首选项并恢复为默认值,这是同样的错误。我也删除并重新安装了jdk。

关于 JavaLaunchHelper 的错误,我在这里发现了一个问题,说这是 1.8 中未修复的错误,可以忽略,因为它们实际上位于正确的位置。

我的 IDE 是 Spring Tool Suite,我正在用 Spring Data 编写代码。

感谢任何帮助,谢谢!

objc[8419]: Class JavaLaunchHelper is implemented in both           /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java and        /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
java.lang.UnsupportedClassVersionError: io/pivotal/ticket/RuleControllerTest : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at 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 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:685)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:421)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

【问题讨论】:

  • jdk1.7.0_79 绝对不是1.8。所以你不应该对它不能运行需要1.8的代码感到惊讶。
  • 我已经检查过了,我的编译器使用的是 1.8,我知道这些差异。几周前我不得不更改为 1.8,因为我的项目需要它 - 我没有进行任何 jdk 更改,然后出现关于 jdk1.7 的错误。根据几个论坛,我发现有关该错误的 jdk 存在导致错误出现但实际上不应该影响代码的问题 - UnsupportedClassVersion 错误似乎是一个单独的问题。
  • 我不知道您在说什么其他问题,当您说“UnsupportedClassVersion 错误似乎是一个单独的问题”时,因为这是您在中提到的唯一问题你的问题。而且您发布的日志清楚地表明您正在尝试在jdk1.7.0_79 中运行该应用程序。
  • 第一段中的错误是我被告知是一个错误并且已经检查过的错误,它是 1.8 被使用的 - 我找不到任何使用 1.7 的地方。我在第二段中谈论的错误出现在第一段之后,似乎是一个不同的问题。
  • 在您的第一段中,您根本没有描述错误。您说“我收到以下错误”,但随后没有错误描述。相反,您正在描述您尝试修复未描述的错误的内容。在第二段中,您说的是“关于 JavaLaunchHelper 的错误”,然后您将其描述为可以忽略的错误,因此这似乎不是您的问题。那么剩下的就是UnsupportedClassVersionError 有一个明显的原因,因为日志清楚地提到了/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/…

标签: spring java-8


【解决方案1】:

io/pivotal/ticket/RuleControllerTest 类已使用 Java 1.8 编译,但您正尝试使用 Java 1.7(或更早版本)运行它。你应该检查你的运行配置。由于这是从 Eclipse 的测试运行程序运行的,因此您需要更改运行配置或使用 JDK 1.8 运行 Eclipse。

【讨论】:

  • 我正在使用 Spring 工具套件,虽然我在首选项部分找到了编译器设置,但我似乎找不到如何更改运行配置?谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-06-08
  • 2016-05-29
  • 2014-07-07
  • 2015-10-22
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
相关资源
最近更新 更多