java 使用 JDK 1.7 运行播放应用程序时出现 UnsupportedClassVersionError

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/31069320/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 18:02:41  来源:igfitidea点击:

UnsupportedClassVersionError on running play application with JDK 1.7

javaplayframeworktypesafe-activator

提问by Pokuri

Just now started learning Play framework for my project requirement and my project only build on JDK 1.7so I have downloaded Play 2.3.9version and created a sample project by typing activator new. Then moved into the sample project directory and executed activator run. Then I see JDk incompatible exceptions. Where I have to make the changes to handle this?

刚刚开始为我的项目需求学习 Play 框架,我的项目仅构建在JDK 1.7 上,所以我下载了Play 2.3.9版本并通过键入activator new. 然后移入示例项目目录并执行activator run. 然后我看到 JDK 不兼容的异常。我必须在哪里进行更改才能处理此问题?

log:

日志:

[info] Loading project definition from E:\workspace\play\first-app\project
[info] Set current project to first-app (in build file:/E:/workspace/play/first-app/)
java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : 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.access0(URLClassLoader.java:71)
        at java.net.URLClassLoader.run(URLClassLoader.java:361)
        at java.net.URLClassLoader.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 java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load.apply(SbtWeb.scala:535)
        at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load.apply(SbtWeb.scala:535)
        at scala.Option.fold(Option.scala:157)
        at com.typesafe.sbt.web.SbtWeb$.com$typesafe$sbt$web$SbtWeb$$load(SbtWeb.scala:549)
        at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$$anonfun$apply.apply(SbtWeb.scala:143)
        at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$$anonfun$apply.apply(SbtWeb.scala:143)
        at scala.Function1$$anonfun$andThen.apply(Function1.scala:55)
        at sbt.Project$.setProject(Project.scala:319)
        at sbt.BuiltinCommands$.doLoadProject(Main.scala:484)
        at sbt.BuiltinCommands$$anonfun$loadProjectImpl.apply(Main.scala:475)
        at sbt.BuiltinCommands$$anonfun$loadProjectImpl.apply(Main.scala:475)
        at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:58)
        at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:58)
        at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:60)
        at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:60)
        at sbt.Command$.process(Command.scala:92)
        at sbt.MainLoop$$anonfun$$anonfun$apply.apply(MainLoop.scala:98)
        at sbt.MainLoop$$anonfun$$anonfun$apply.apply(MainLoop.scala:98)
        at sbt.State$$anon.process(State.scala:184)
        at sbt.MainLoop$$anonfun.apply(MainLoop.scala:98)
        at sbt.MainLoop$$anonfun.apply(MainLoop.scala:98)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.MainLoop$.next(MainLoop.scala:98)
        at sbt.MainLoop$.run(MainLoop.scala:91)
        at sbt.MainLoop$$anonfun$runWithNewLog.apply(MainLoop.scala:70)
        at sbt.MainLoop$$anonfun$runWithNewLog.apply(MainLoop.scala:65)
        at sbt.Using.apply(Using.scala:24)
        at sbt.MainLoop$.runWithNewLog(MainLoop.scala:65)
        at sbt.MainLoop$.runAndClearLast(MainLoop.scala:48)
        at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:32)
        at sbt.MainLoop$.runLogged(MainLoop.scala:24)
        at sbt.StandardMain$.runManaged(Main.scala:53)
        at sbt.xMain.run(Main.scala:28)
        at xsbt.boot.Launch$$anonfun$run.apply(Launch.scala:109)
        at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
        at xsbt.boot.Launch$.run(Launch.scala:109)
        at xsbt.boot.Launch$$anonfun$apply.apply(Launch.scala:35)
        at xsbt.boot.Launch$.launch(Launch.scala:117)
        at xsbt.boot.Launch$.apply(Launch.scala:18)
        at xsbt.boot.Boot$.runImpl(Boot.scala:41)
        at xsbt.boot.Boot$.main(Boot.scala:17)
        at xsbt.boot.Boot.main(Boot.scala)
[error] java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : Unsupported major.minor version 52.0

采纳答案by Joop Eggen

52 = Java 8, 51 = Java 7.. On com.typesafe.config.ConfigException; so you have a too new library.

52 =爪哇8,51 = 7的Java ..论com.typesafe.config.ConfigException; 所以你有一个太新的图书馆。

回答by Ronak Agrawal

Description :

描述 :

  • Java SE 8 = 52
  • Java SE 7 = 51
  • Java SE 6.0 = 50
  • Java SE 8 = 52
  • Java SE 7 = 51
  • Java SE 6.0 = 50

Java 8 has major version 52, which means if we run javac command from Java 8 installation, it will by default generate a class with major version 52. However, if we run class file in JRE 7, we will get "Unsupported major.minor version 52.0".

Java 8 的主要版本为 52,这意味着如果我们从 Java 8 安装运行 javac 命令,它会默认生成一个主要版本为 52 的类。但是,如果我们在 JRE 7 中运行类文件,我们将得到“Unsupported major.minor版本 52.0”。

Solution :

解决方案 :

There was a mis configuration in %JAVA_HOME%

%JAVA_HOME% 配置错误

  • java -versionjava version "1.8.0_45"

  • javac -versionjavac 1.8.0_45

  • @echo %JAVA_HOME%C:\Program Files\Java\jdk1.7.0_75

  • java -versionjava版本“1.8.0_45”

  • javac -versionjavac 1.8.0_45

  • @echo %JAVA_HOME%C:\Program Files\Java\jdk1.7.0_75

To set the path temporary

临时设置路径

  • set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_45

  • @echo %JAVA_HOME%C:\Program Files\Java\jdk1.8.0_45

  • set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_45

  • @echo %JAVA_HOME%C:\Program Files\Java\jdk1.8.0_45

回答by Rahul Singhai

ConfigException occurs because from version 1.3.0, com.typesafe.config library is only compatible with JDK8; see README. You need to downgrade the library version. Use

出现ConfigException是因为从1.3.0版本开始,com.typesafe.config库只兼容JDK8;请参阅自述文件。您需要降级库版本。利用

"com.typesafe" % "config" % "1.2.1"

回答by Sunil Tonger

Faced similar issue, resolved by changing version

遇到类似问题,通过更改版本解决

//addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.0")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.9")

With above changes below exception got resolved (note: system has java 7)

通过以下异常的上述更改得到解决(注意:系统有 java 7)

Exception got with higher version:

更高版本出现异常:

[info] Set current project to helloworld (in build file:/Users/suniltonger/Projects/play/helloworld/helloworld/)
java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : 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.access0(URLClassLoader.java:71)
    at java.net.URLClassLoader.run(URLClassLoader.java:361)
    at java.net.URLClassLoader.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 java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load.apply(SbtWeb.scala:559)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load.apply(SbtWeb.scala:559)
    at scala.Option.fold(Option.scala:157)
    at com.typesafe.sbt.web.SbtWeb$.com$typesafe$sbt$web$SbtWeb$$load(SbtWeb.scala:573)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$$anonfun$apply.apply(SbtWeb.scala:143)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$$anonfun$apply.apply(SbtWeb.scala:143)
    at scala.Function1$$anonfun$andThen.apply(Function1.scala:55)
    at sbt.Project$.setProject(Project.scala:319)
    at sbt.BuiltinCommands$.doLoadProject(Main.scala:503)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl.apply(Main.scala:484)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl.apply(Main.scala:484)
    at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:59)
    at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:59)
    at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:61)
    at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:61)
    at sbt.Command$.process(Command.scala:93)
    at sbt.MainLoop$$anonfun$$anonfun$apply.apply(MainLoop.scala:96)
    at sbt.MainLoop$$anonfun$$anonfun$apply.apply(MainLoop.scala:96)
    at sbt.State$$anon.process(State.scala:184)
    at sbt.MainLoop$$anonfun.apply(MainLoop.scala:96)
    at sbt.MainLoop$$anonfun.apply(MainLoop.scala:96)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.MainLoop$.next(MainLoop.scala:96)
    at sbt.MainLoop$.run(MainLoop.scala:89)
    at sbt.MainLoop$$anonfun$runWithNewLog.apply(MainLoop.scala:68)
    at sbt.MainLoop$$anonfun$runWithNewLog.apply(MainLoop.scala:63)
    at sbt.Using.apply(Using.scala:24)
    at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63)
    at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46)
    at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30)
    at sbt.MainLoop$.runLogged(MainLoop.scala:22)
    at sbt.StandardMain$.runManaged(Main.scala:54)
    at sbt.xMain.run(Main.scala:29)
    at xsbt.boot.Launch$$anonfun$run.apply(Launch.scala:109)
    at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
    at xsbt.boot.Launch$.run(Launch.scala:109)
    at xsbt.boot.Launch$$anonfun$apply.apply(Launch.scala:35)
    at xsbt.boot.Launch$.launch(Launch.scala:117)
    at xsbt.boot.Launch$.apply(Launch.scala:18)
    at xsbt.boot.Boot$.runImpl(Boot.scala:41)
    at xsbt.boot.Boot$.main(Boot.scala:17)
    at xsbt.boot.Boot.main(Boot.scala)
[error] java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : Unsupported major.minor version 52.0
[error] Use 'last' for the full log.
[debug] > load-failed

回答by soutoner

Although it seemed I was using the same version for java and javac:

虽然我似乎对 java 和 javac 使用了相同的版本:

  • java -versionjava version "1.8.0_51"
  • javac -versionjavac 1.8.0_51
  • java -versionjava版本“1.8.0_51”
  • javac -versionjavac 1.8.0_51

My problem was (Linux Mint 17.1) that I had installed oracle-java7and oracle-java8so somewhere there must be a misconfiguration.

我的问题是(Linux Mint的17.1),我已经安装oracle-java7oracle-java8这样的地方必须有一个配置错误。

I uninstalled oracle-java7and everything worked fine to me.

我卸载了oracle-java7,一切对我来说都很好。

回答by Amélie Medem

Indeed what @cib is saying solves my problem. Just modify the file plugins.sbtin my projet directory.

@cib 所说的确实解决了我的问题。只需修改plugins.sbt我的项目目录中的文件即可。

Change the line :

更改行:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.2")

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.2")

to:

到:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.9")

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.9")

and you'll not get any errors doing activator runagain.

并且您不会再犯任何错误activator run