starter play framework create java playframework typesafe-activator

java - create - playframework scala



UnsupportedClassVersionError en la ejecuciĆ³n de la aplicaciĆ³n Play con JDK 1.7 (6)

Recién ahora comencé a aprender Play Framework para los requisitos de mi proyecto y mi proyecto solo se compiló en JDK 1.7, así que descargué la versión de Play 2.3.9 y creé un proyecto de muestra escribiendo activator new . Luego se movió al directorio del proyecto de muestra y se ejecutó la activator run . Entonces veo JDk excepciones incompatibles. Donde tengo que hacer los cambios para manejar esto?

Iniciar sesión:

[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



Aunque parecía que estaba usando la misma versión para java y javac:

  • java -version versión java "1.8.0_51"
  • javac -version javac 1.8.0_51

Mi problema era (Linux Mint 17.1) que había instalado oracle-java7 y oracle-java8 así que en algún lugar debe haber una configuración incorrecta.

Desinstalé oracle-java7 y todo funcionó bien para mí.


ConfigException ocurre porque a partir de la versión 1.3.0, la biblioteca com.typesafe.config solo es compatible con JDK8; ver README . Debe degradar la versión de la biblioteca. Utilizar

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


De hecho, lo que dice @cib resuelve mi problema. Simplemente modifique el archivo plugins.sbt en mi directorio de proyecto.

Cambiar la línea:

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

a:

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

y no obtendrás ningún error al hacer que el activator run vuelva a activator run .


Enfrentando un problema similar, resuelto cambiando la versión

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

Con los cambios anteriores debajo de la excepción se resolvió (nota: el sistema tiene java 7)

Excepción obtenida con una versión superior:

[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


Descripción:

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

Java 8 tiene la versión principal 52, lo que significa que si ejecutamos el comando javac desde la instalación de Java 8, generará una clase por defecto con la versión principal 52. Sin embargo, si ejecutamos el archivo de clase en JRE 7, obtendremos "major.minor no admitido". versión 52.0 ".

Solución:

Hubo una configuración incorrecta en% JAVA_HOME%

  • java -version versión java "1.8.0_45"

  • javac -version javac 1.8.0_45

  • @echo %JAVA_HOME% C: / Archivos de programa / Java / jdk1.7.0_75

Para establecer el camino temporal

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

  • @echo %JAVA_HOME% C: / Archivos de programa / Java / jdk1.8.0_45