我知道StackOverflow上有很多问题可以解决这个问题(我已经通过这些解决方案来实现这一点了),但我仍然卡住了。应用程序在我的机器上本地运行正常,但我可以不能让它在Ubuntu服务器上运行。以下是我为解决这个问题所做的工作:
Unsupported major.minor version 52.0
表示与Java版本存在冲突。我通过在我的Ubuntu服务器上安装Java 1.8并使其成为默认的Java来解决这个问题。java -version
和javac -version
在Ubuntu服务器上是1.80_40
,在我的本地计算机上是1.8.0_31
。$JAVA_HOME
路径为/usr/lib/jvm/java-8-oracle/
以下是部署WAR文件后出现的错误:
java.lang.UnsupportedClassVersionError: com/appname/servlets/getServlet: Unsupported major.minor version 52.0 (unable to load class com.appname.servlets.getServlet)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2948)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:745)
编辑:请不要将其标记为重复。我觉得我的问题是别的,因为我知道它是在相同版本(Java 1.8)上编译和运行的。
答案 0 :(得分:0)
尽管我的Ubuntu服务器中java -version
和javac -version
都显示为1.8,但我注意到Tomcat在访问其Manager-GUI(底部附近)时仍然使用1.7。
在Ask Ubuntu的this question帮助下解决了这个问题。基本上,JAVA_HOME
需要更新 Tomcat以及使用vi /etc/default/tomcat7
。我将我设置为/usr/lib/jvm/java-8-oracle
,重新启动Tomcat,现在它在Tomcat中显示正确的版本。
答案 1 :(得分:0)
为了解决windows环境下的Java版本问题,我们需要以管理员身份运行Tomcat7w.exe,将jvm.dll的路径改为预期的Java home目录路径。
例如 - C:\Program Files\Java\jdk1.8.0_221\jre\bin\server\jvm.dll
如果您无法通过运行 Tomcat7w.exe 来打开配置窗口,那么可以对已注册的 Tomcat7 服务的注册表项进行丑陋的修改,以更改 JVM 路径,如下所示 -
Tomcat 服务需要刷新(在 services.msc 中)并重新启动以使 Java 更改生效。希望这个答案可以节省在 Windows 环境中遇到类似问题的人的时间。