UnsupportedClassVersionError при запуске игрового приложения с JDK 1.7

Только сейчас начал изучать платформу Play для требований моего проекта, и мой проект основан только на JDK 1.7, поэтому я скачал версию Play 2.3.9 и создал пример проекта, набрав activator new. Затем переместился в каталог примера проекта и выполнил activator run. Затем я вижу несовместимые с JDk исключения. Где я должен внести изменения, чтобы справиться с этим?

журнал:

[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.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 java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load$1.apply(SbtWeb.scala:535)
        at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load$1.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$1$$anonfun$apply$1.apply(SbtWeb.scala:143)
        at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$1$$anonfun$apply$1.apply(SbtWeb.scala:143)
        at scala.Function1$$anonfun$andThen$1.apply(Function1.scala:55)
        at sbt.Project$.setProject(Project.scala:319)
        at sbt.BuiltinCommands$.doLoadProject(Main.scala:484)
        at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:475)
        at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:475)
        at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:58)
        at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:58)
        at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:60)
        at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:60)
        at sbt.Command$.process(Command.scala:92)
        at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:98)
        at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:98)
        at sbt.State$$anon$1.process(State.scala:184)
        at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:98)
        at sbt.MainLoop$$anonfun$1.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$1.apply(MainLoop.scala:70)
        at sbt.MainLoop$$anonfun$runWithNewLog$1.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$1.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$1.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

person Pokuri    schedule 26.06.2015    source источник
comment
Откройте E:\workspace\play\first-app\project\plugins.sbt. Какое число X.Y.Z в строке addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "X.Y.Z")?   -  person Salem    schedule 27.06.2015
comment
это 2.4.1. Сейчас поменял на 2.3.9 и все работает   -  person Pokuri    schedule 27.06.2015
comment
Может ли кто-нибудь создать ответ с подробным описанием явных шагов? То есть переходим в app/project/plugins.sbt и заменяем версию com.typesafe.play на 2.3.9. Официальный ответ заставил меня подумать, что с моей настройкой JDK что-то не так, но кажется, что изменение (автоматически сгенерированного) plugins.sbt является подходящим решением.   -  person cib    schedule 11.08.2015
comment
Та же ошибка при сборке play 2.4.x в системе сборки shippable.com с openjdk8. Переключение на тег сборки oraclejdk8 устранило проблему.   -  person Adam Lane    schedule 28.11.2015
comment
Привет, Покури. Я тоже столкнулся с той же проблемой, раньше это была версия 2.5.9, и я изменил ее на 2.3.9, но все еще сталкиваюсь с той же проблемой. помогите пожалуйста что делать?   -  person Ram Koti    schedule 15.05.2017


Ответы (6)


52 = Java 8, 51 = Java 7.. На com.typesafe.config.ConfigException; значит у вас слишком новая библиотека.

person Joop Eggen    schedule 26.06.2015
comment
Я вижу, что для 2.4.x требуется Java 8, поэтому я скачал 2.3.9 по ссылке playframework.com/download #старые-версии. Тогда как я получил файлы, совместимые с Java 8? - person Pokuri; 26.06.2015
comment
У вас была предварительная установка? Проверьте свою войну на наличие ложно взятых банок. Возможно, сериализованный объект confif слишком новой версии (*.ser или что-то еще) - person Joop Eggen; 26.06.2015
comment
У меня такая же проблема. У меня есть еще один проект в Play 2.3.9, и я хочу, чтобы этот был 2.4.1. - person Pavel Kudinov; 30.06.2015
comment
пожалуйста, можете ли вы уточнить решение? - person SaKou; 25.02.2016
comment
@SaKou приложение, работающее, скажем, на Java 6, использует класс, скомпилированный, скажем, для Java 8. Решение состоит в том, чтобы найти более старую библиотеку (если класс находится в библиотеке), перекомпилировать для более старой Java, если это ваш собственный класс, или запустите приложение с более новой версией java. - person Joop Eggen; 25.02.2016

Описание:

  • Ява SE 8 = 52
  • Ява SE 7 = 51
  • Java SE 6.0 = 50

Java 8 имеет основную версию 52, что означает, что если мы запустим команду javac из установки Java 8, она по умолчанию создаст класс с основной версией 52. Однако, если мы запустим файл класса в JRE 7, мы получим «Unsupported major.minor версия 52.0".

Решение:

Неправильная конфигурация в %JAVA_HOME%

  • java -version версия Java "1.8.0_45"

  • javac -version javac 1.8.0_45

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

Чтобы установить путь временно

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

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

person Ronak Agrawal    schedule 02.10.2015
comment
Спасибо за описание и ответ в стиле решения :) - person fermat4214; 28.08.2017

ConfigException возникает из-за того, что начиная с версии 1.3.0 библиотека com.typesafe.config совместима только с JDK8; см. README. Вам необходимо понизить версию библиотеки. Использовать

"com.typesafe" % "config" % "1.2.1"
person Rahul Singhai    schedule 17.02.2016

Хотя казалось, что я использую одну и ту же версию для java и javac:

  • java -version версия Java "1.8.0_51"
  • javac -version javac 1.8.0_51

Моя проблема заключалась в том, что (Linux Mint 17.1) я установил oracle-java7 и oracle-java8, поэтому где-то должна быть неправильная конфигурация.

Я удалил oracle-java7, и у меня все заработало.

person soutoner    schedule 18.08.2015
comment
Такая же проблема была у меня на Ubuntu 14.04. - person lennykey; 08.10.2015
comment
У меня та же версия java в пути, но моя переменная JAVA_HOME была установлена ​​для предыдущей версии. Установка правильной версии JAVA_HOME решила проблему. - person Decly; 12.11.2015

Столкнулся с похожей проблемой, решил сменой версии

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

С приведенными выше изменениями ниже исключение было разрешено (примечание: в системе есть java 7)

Исключение получено с более высокой версией:

[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.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 java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load$1.apply(SbtWeb.scala:559)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load$1.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$1$$anonfun$apply$1.apply(SbtWeb.scala:143)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$1$$anonfun$apply$1.apply(SbtWeb.scala:143)
    at scala.Function1$$anonfun$andThen$1.apply(Function1.scala:55)
    at sbt.Project$.setProject(Project.scala:319)
    at sbt.BuiltinCommands$.doLoadProject(Main.scala:503)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:484)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:484)
    at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
    at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
    at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
    at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
    at sbt.Command$.process(Command.scala:93)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
    at sbt.State$$anon$1.process(State.scala:184)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
    at sbt.MainLoop$$anonfun$1.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$1.apply(MainLoop.scala:68)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.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$1.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$1.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
person Sunil Tonger    schedule 26.03.2016
comment
Привет, Сунил, я изменил sbt-plugin с 2.5.9 на 2.3.9, но все же столкнулся с той же проблемой, пожалуйста, помогите мне, заранее спасибо - person Ram Koti; 15.05.2017

Действительно, то, что говорит @cib, решает мою проблему. Просто измените файл plugins.sbt в каталоге моего проекта.

Измените строку:

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

to:

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

и вы больше не получите никаких ошибок при выполнении activator run.

person Amélie Medem    schedule 30.08.2015
comment
Привет, Амели, я изменил sbt-plugin с 2.5.9 на 2.3.9, но все же столкнулся с той же проблемой, пожалуйста, помогите мне. - person Ram Koti; 15.05.2017