如何从 Macbook 中完全删除 jdk 1.8? Scala 网络应用程序项目
How to completely remove jdk 1.8 from Macbook? Scala Webapps Project
感谢阅读我的问题。我已经为此苦苦挣扎了8个多小时。在我的 macbook 上,我安装了 JDK 6、7 和 8,默认为 8。今天早上我需要创建一个 scala/sbt webapp 项目(打包到 .war)以在 tomcat7 上部署一个简单的测试应用程序。
唯一要求:项目必须能够 运行 JRE 1.7 & Tomcat 7
由于不受支持 major.minor 以及无数其他版本控制问题和可怕的 giter8 模板,我无法做到这一点。
这是我目前的困境:
已执行 "Starting From Scratch" 部分中的所有步骤,直到 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 与 link 中的完全相同。
这是我的项目结构:
.
├── build.sbt
├── project
│ ├── build.properties
│ └── build.sbt
└── src
└── main
├── scala
│ └── servlets.scala
└── webapp
└── WEB-INF
└── web.xml
6 directories, 5 files
这是我存在的祸根:
$ 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.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 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 岁)否则就给你喝苏打水! :-)
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-插件 3.0.x,default Jetty version is 9. Based on 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 Jetty. The default version of Tomcat is 8, which looks like it should work with Java 7 according to this table。
要切换到 Tomcat,请在您的 sbt 配置中将 enablePlugins(JettyPlugin)
更改为 enablePlugins(TomcatPlugin)
,然后在 sbt 提示符下将 jetty:start jetty:join
更改为 tomcat:start tomcat:join
。
感谢阅读我的问题。我已经为此苦苦挣扎了8个多小时。在我的 macbook 上,我安装了 JDK 6、7 和 8,默认为 8。今天早上我需要创建一个 scala/sbt webapp 项目(打包到 .war)以在 tomcat7 上部署一个简单的测试应用程序。
唯一要求:项目必须能够 运行 JRE 1.7 & Tomcat 7
由于不受支持 major.minor 以及无数其他版本控制问题和可怕的 giter8 模板,我无法做到这一点。
这是我目前的困境:
已执行 "Starting From Scratch" 部分中的所有步骤,直到 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 与 link 中的完全相同。
这是我的项目结构:
.
├── build.sbt
├── project
│ ├── build.properties
│ └── build.sbt
└── src
└── main
├── scala
│ └── servlets.scala
└── webapp
└── WEB-INF
└── web.xml
6 directories, 5 files
这是我存在的祸根:
$ 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.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 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 岁)否则就给你喝苏打水! :-)
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-插件 3.0.x,default Jetty version is 9. Based on 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 Jetty. The default version of Tomcat is 8, which looks like it should work with Java 7 according to this table。
要切换到 Tomcat,请在您的 sbt 配置中将 enablePlugins(JettyPlugin)
更改为 enablePlugins(TomcatPlugin)
,然后在 sbt 提示符下将 jetty:start jetty:join
更改为 tomcat:start tomcat:join
。