如何从Macbook中完全删除jdk 1.8? Scala Webapps项目

时间:2017-11-08 02:06:47

标签: java macos scala java-7 xsbt-web-plugin

感谢您阅读我的问题。我已经苦苦挣扎了8个多小时。在我的macbook上,我安装了JDK 6,7和8,默认为8。今天早上我需要创建一个scala / sbt webapp项目(打包到.war)以在tomcat7上部署一个简单的测试应用程序。

仅要求:项目必须能够在JRE 1.7& Tomcat 7

我无法做到这一点,因为版本控制和可怕的giter8模板存在不受支持的major.minor和无数其他问题。

这是我目前的困境:

遵循“从头开始”部分中的所有步骤,直至sbt jetty:start jetty:join。 (跳至上一个代码段以获取错误):  https://github.com/earldouglas/xsbt-web-plugin/blob/master/docs/3.0.x.md

这是我的 java主页和版本

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
$
$ 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)

这是我的 build.sbt

scalaVersion := "2.11.6"

libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1" % "provided"

enablePlugins(JettyPlugin) 

这是我的 project / build.sbt

addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "3.0.3")

这是我的 project / build.properties

sbt.version=0.13.8

servlet.scala和web.xml与链接中的完全相同。

这是我的项目结构

.
├── build.sbt
├── project
│   ├── build.properties
│   └── build.sbt
└── src
    └── main
        ├── scala
        │   └── servlets.scala
        └── webapp
            └── WEB-INF
                └── web.xml

6 directories, 5 files

这是我存在的BANE

$ sbt jetty:start jetty:join
[info] Loading project definition from /Users/dan/Projects/temp/ssltester/project
[info] Updating {file:/Users/dan/Projects/temp/ssltester/project/}ssltester-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to ssltester (in build file:/Users/dan/Projects/temp/ssltester/)
[info] Updating {file:/Users/dan/Projects/temp/ssltester/}ssltester...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Compiling 1 Scala source to /Users/dan/Projects/temp/ssltester/target/scala-2.11/classes...
[info] Packaging /Users/dan/Projects/temp/ssltester/target/scala-2.11/ssltester_2.11-0.1-SNAPSHOT.jar ...
[info] Done packaging.
[info] starting server ...
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)
[success] Total time: 3 s, completed Nov 7, 2017 6:58:47 PM
[success] Total time: 0 s, completed Nov 7, 2017 6:58:48 PM
[info] waiting for server to shut down...

**有人可以指出我有什么不对吗? **我完全删除了java 1.8 jdk目录。因为它说version 52 (jdk 8)我不知道它来自哪里。 jdk 7应为51,jdk 6应为50

如果你在丹佛,我会给你买啤酒(如果你超过21岁),否则它就是给你孩子的苏打水! :-)

1 个答案:

答案 0 :(得分:2)

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/jetty/runner/Runner : Unsupported major.minor version 52.0

我的猜测是你正在使用的Jetty版本是为Java 8编译的,如果你正在使用Java 7,它将无法运行。在xsbt-web-plugin 3.0.x中,default Jetty version为9.基于this table,您可能想尝试Jetty 8(或更早版本)。

尝试将此添加到 build.sbt

containerLibs in Jetty := Seq("org.mortbay.jetty" % "jetty-runner" % "8.0.0.v20110901" intransitive())

由于您的要求包括能够在Tomcat下运行您的项目,您可能更喜欢use Tomcat instead of Jettydefault version of Tomcat is 8,根据this table看起来应该与Java 7一起使用。

要切换到Tomcat,请在sbt配置中将enablePlugins(JettyPlugin)更改为enablePlugins(TomcatPlugin),然后在sbt提示符下将jetty:start jetty:join更改为tomcat:start tomcat:join