在Eclipse JPA项目中获取UnsupportedClassVersionError是没有意义的

时间:2015-05-06 18:54:05

标签: java eclipse jpa java-7 jdk1.6

我有一个奇怪的情况。当我到处使用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。这是打印屏幕:

Eclipse Preferences Installed JREs Window

我创建了一个新的JPA项目。在目标运行时中,我选择了jdk1.6.0_34。这是打印屏幕:

Eclipse New JPA Project Window

我单击Configuration部分中的Modify ...按钮确认我正在使用Java 1.6。这是打印屏幕:

Eclipse Project Facets Window

然后我创建了一个简单的类来测试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的错误消息。可能是什么原因?

1 个答案:

答案 0 :(得分:2)

这意味着您使用的某些插件是使用java 1.7构建的,它需要1.7或更高的jre。检查包含堆栈跟踪中提到的类的插件。