Play框架 - 如何修复JRE 6上的UnsupportedClassVersionError?

时间:2012-03-28 09:41:20

标签: java playframework jdk1.6 openjdk

我在OpenJDK 1.7上运行我的播放应用程序。在我尝试部署到仅支持OpenJDK 1.6的heroku之前,一切都很顺利。我修复了在OpenJDK 1.6上运行的语法,但是当我去运行它时,我收到以下错误:

erin@bob:/src/playtest$ java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
erin@bob:/src/playtest$ play run
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.4, http://www.playframework.org
~
~ Ctrl+C to stop
~ 
Listening for transport dt_socket at address: 8000
22:13:21,806 INFO  ~ Starting /src/playtest
22:13:21,811 INFO  ~ Module securesocial is available (/src/play-1.2.4/modules/securesocial-0.2.4)
22:13:21,811 INFO  ~ Module crudsiena is available (/src/playtest/modules/crudsiena-2.0.2)
22:13:21,812 INFO  ~ Module siena is available (/src/playtest/modules/siena-2.0.7)
Exception in thread "main" java.lang.UnsupportedClassVersionError: DocViewerPlugin : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at play.classloading.ApplicationClassloader.loadApplicationClass(ApplicationClassloader.java:166)
    at play.classloading.ApplicationClassloader.loadClass(ApplicationClassloader.java:84)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at play.plugins.PluginCollection.loadPlugins(PluginCollection.java:158)
    at play.Play.init(Play.java:294)
    at play.server.Server.main(Server.java:158)

看起来在某个地方编译了一个Java 1.7类,该游戏试图在Java 1.6 VM上运行。

我已经运行play clean,并且还删除了常春藤缓存并运行play deps以重新安装所有依赖项。我还搜索了我的app目录和我的play安装目录中的stray .class文件,并且没有找到。我也尝试清除/ tmp中的文件被引用,但它没有效果。

DocViewerPlugin是核心播放插件之一,我不需要它,有没有办法将它列入黑名单?

2 个答案:

答案 0 :(得分:10)

我明白了。在application.conf中,确保已设置java.source=1.6

答案 1 :(得分:7)

您必须使用-target 1.6选项编译代码。