我有一个奇怪的情况。当我到处使用Java 1.6时,我收到有关Java 1.7的错误。
我正在使用 Eclipse Kepler 32位。
我正在使用的JPA实现是 EclipseLink 2.6.0 。
在窗口中 - >偏好 - > Java - >安装了JRE,我检查了jdk1.6.0_34(默认),其位置为C:\Program Files (x86)\Java\jdk1.6.0_34
。这是打印屏幕:
我创建了一个新的JPA项目。在目标运行时中,我选择了jdk1.6.0_34。这是打印屏幕:
我单击Configuration部分中的Modify ...按钮确认我正在使用Java 1.6。这是打印屏幕:
然后我创建了一个简单的类来测试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$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.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的错误消息。可能是什么原因?
答案 0 :(得分:2)
这意味着您使用的某些插件是使用java 1.7构建的,它需要1.7或更高的jre。检查包含堆栈跟踪中提到的类的插件。