在没有意义的 Eclipse JPA 项目中获取 UnsupportedClassVersionError
Getting UnsupportedClassVersionError in Eclipse JPA project which does not make sense
我这里有一个奇怪的情况。当我到处使用 Java 1.6 时,我收到有关 Java 1.7 的错误。
我正在使用 Eclipse Kepler 32 位。
我使用的 JPA 实现是 EclipseLink 2.6.0.
在 Window --> Preferences --> Java --> Installed JREs 中,我检查了 jdk1.6.0_34 (默认),它的位置是 C:\Program Files (x86)\Java\jdk1.6.0_34
。这是打印屏幕:
我创建了一个新的 JPA 项目。在目标运行时间我选择了jdk1.6.0_34。这是打印屏幕:
我单击“配置”部分中的“修改...”按钮以确认我正在使用 Java 1.6。这是打印屏幕:
然后我创建了一个简单的 class 来测试 JPA:
package com.test;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class TestJPA {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyTestJpaProject");
emf.close();
}
}
当我 运行 它时,我收到一条错误消息:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/persistence/jpa/PersistenceProvider : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access[=11=]0(URLClassLoader.java:58)
at java.net.URLClassLoader.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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:117)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:76)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at com.test.TestJPA.main(TestJPA.java:16)
这很奇怪。我到处都在使用 Java 1.6,但 Eclipse 给我这个关于 Java 1.7 的错误消息。可能是什么原因?
这意味着您正在使用的某些插件是使用 java 1.7 构建的,它需要 1.7 或更高版本的 jre。检查包含堆栈跟踪中提到的 class 的插件。
我这里有一个奇怪的情况。当我到处使用 Java 1.6 时,我收到有关 Java 1.7 的错误。
我正在使用 Eclipse Kepler 32 位。
我使用的 JPA 实现是 EclipseLink 2.6.0.
在 Window --> Preferences --> Java --> Installed JREs 中,我检查了 jdk1.6.0_34 (默认),它的位置是 C:\Program Files (x86)\Java\jdk1.6.0_34
。这是打印屏幕:
我创建了一个新的 JPA 项目。在目标运行时间我选择了jdk1.6.0_34。这是打印屏幕:
我单击“配置”部分中的“修改...”按钮以确认我正在使用 Java 1.6。这是打印屏幕:
然后我创建了一个简单的 class 来测试 JPA:
package com.test;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class TestJPA {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyTestJpaProject");
emf.close();
}
}
当我 运行 它时,我收到一条错误消息:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/persistence/jpa/PersistenceProvider : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access[=11=]0(URLClassLoader.java:58)
at java.net.URLClassLoader.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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:117)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:76)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at com.test.TestJPA.main(TestJPA.java:16)
这很奇怪。我到处都在使用 Java 1.6,但 Eclipse 给我这个关于 Java 1.7 的错误消息。可能是什么原因?
这意味着您正在使用的某些插件是使用 java 1.7 构建的,它需要 1.7 或更高版本的 jre。检查包含堆栈跟踪中提到的 class 的插件。