Reputation: 1994
this "unsupported major.minor 52.0 version" error is driving me nuts.
How can I get scala to use jdk 1.7. My SBT project needs to be 1.7 and I cannot run sbt or scala unless I set my java_home to 1.8.
My google foo is not strong since there are so many results for this vague-keyword problem.
Do I need to install different version of scala? sbt?
Thanks,
Edit More details:
$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
$ sbt -sbt-version 0.13.16 ~jetty:start
[info] Loading project definition from /Users/dan/Projects/temp/ssltester/project
[info] Set current project to ssltester (in build file:/Users/dan/Projects/temp/ssltester/)
[info] starting server ...
[success] Total time: 0 s, completed Nov 7, 2017 4:35:49 PM
1. Waiting for source changes... (press enter to interrupt)
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/jetty/runner/Runner : 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 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
[info] waiting for server to shut down...
build.sbt
name := "ssltester"
version := "1.0"
scalaVersion := "2.11.11"
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
libraryDependencies += "org.scala-lang.modules" %% "scala-xml" % "1.0.2"
libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1" % "provided"
libraryDependencies += "org.codehaus.groovy.modules.http-builder" % "http-builder" % "0.5.2"
enablePlugins(JettyPlugin)
./project/build.sbt
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "3.0.1")
Upvotes: 1
Views: 1622
Reputation: 369556
Scala 2.12 requires a Java 8 JVM and library. You will either have to use a current version of Java or an outdated version of Scala.
Traits now compile to interface
s with default
methods, and Scala lambdas use the same encoding as Java 8 lambdas do. Java 8 lambdas are mostly a library feature and could be backported, but method implementations in interfaces are a backwards-incompatible change to the bytecode language.
Upvotes: 7