Junit是否需要java 1.5来实现play framework 2.3?

Junit是否需要java 1.5来实现play framework 2.3?,java,eclipse,playframework,junit4,unsupported-class-version,Java,Eclipse,Playframework,Junit4,Unsupported Class Version,我从一个用java编写的简单play framework 2.3项目开始 我已经使用activator创建了这个项目,并运行eclipse命令来创建eclipse风格的项目。然后,我在eclipse工作区中导入了代码。Play框架似乎工作得很好,我可以编写代码,并看到它在浏览器中运行时没有错误 但如果我试图运行JUnit测试以填充内存数据库中的一些数据,我会得到一个不受支持的ClassVersion: java.lang.UnsupportedClassVersionError: control

我从一个用java编写的简单play framework 2.3项目开始

我已经使用activator创建了这个项目,并运行eclipse命令来创建eclipse风格的项目。然后,我在eclipse工作区中导入了代码。Play框架似乎工作得很好,我可以编写代码,并看到它在浏览器中运行时没有错误

但如果我试图运行JUnit测试以填充内存数据库中的一些数据,我会得到一个不受支持的ClassVersion:

java.lang.UnsupportedClassVersionError: controllers/routes$ref : 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 IntegrationTest.createCourse(IntegrationTest.java:38)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

如果我没有记错的话,在我用java 8运行项目时,play framework下载到.ivy2本地存储库的junit-4.11.jar似乎是用java 1.5编译的。我怎样才能解决这个问题?我已经读到Play Framework至少需要java 7才能运行…

即使Junit-4.11是用java 1.5编译的,它也应该在java 8上运行,java保持向后兼容性


问题是,您使用的是更高的Java版本(可能是Java 8)编译,而使用的是更低的版本(可能是1.7)。

谢谢,我发现了。在eclipse中,我设置了JDK1.7,但play framework仍然使用默认的JVM(1.8)。我已经改变了JAVA_主页并重新启动了play,它可以正常工作。