问题:将我的战争部署到 tomcat7 时,我收到错误 java.lang.UnsupportedClassVersionError: org.MyLibraryClass : Unsupported major.minor version 51.0
(这是使用比运行代码时使用的 java 更新的版本编译 java 时遇到的错误。)
情况,按顺序:
- 全新的 ubuntu 12.04.1 服务器 64 位最小,在虚拟机中
- 安装tomcat6
- 试图部署我的战争
- 意识到错误,我需要java7,因为ubuntu 12仍然带有过时的java
使用本指南安装了 oracle java 7 https://askubuntu.com/questions/197248/java-on-ubuntu-server-12-04
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer
删除tomcat6并安装tomcat7
sudo apt-get remove tomcat6-common sudo apt-get install tomcat7
将我的战争部署到tomcat7
启动tomcat
sudo service tomcat7 start
检查了我的应用程序的日志文件。同样的错误。
echo $JAVA_HOME 为空,java -version 显示:
java version "1.7.0_07" Java(TM) SE Runtime Environment (build 1.7.0_07-b10) Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
这是默认的tomcat7安装,没有修改。我仍然检查了启动脚本和配置,以确保没有在任何地方指定自定义 Java 版本。还通过询问 catalina 进行了检查:
ubuntu@ubuntu:/home$ /usr/share/tomcat7/bin/catalina.sh version Using CATALINA_BASE: /usr/share/tomcat7 Using CATALINA_HOME: /usr/share/tomcat7 Using CATALINA_TMPDIR: /usr/share/tomcat7/temp Using JRE_HOME: /usr Using CLASSPATH: /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar Server version: Apache Tomcat/7.0.26 Server built: Jul 19 2012 03:21:30 Server number: 7.0.26.0 OS Name: Linux OS Version: 3.2.0-29-generic Architecture: amd64 JVM Version: 1.7.0_07-b10 JVM Vendor: Oracle Corporation
现在我被困住了。我看不出任何 java 代码如何无法在 oracle 的 jre7 上运行。
我的战争是一个全新的非常基本的 hello world grails 2.1 应用程序,带有 maven,它有一个用 jdk7 编译的 maven 依赖项(org.MyLibraryClass)。那就是我得到错误的那个。
在 grails 中,我将 BuildConfig.groovy 更改为 1.7 而不是 1.6:
grails.project.target.level = 1.7 grails.project.source.level = 1.7
然后做了一个 grails 清理、重建、战争、重新部署。没变。
知道接下来要尝试什么吗?