问题:当我将战争部署到tomcat7时,我收到错误 java.lang.UnsupportedClassVersionError:org.MyLibraryClass:不支持的major.minor版本51.0
(这是使用比运行代码时使用的java更新的版本编译java时出现的错误。)
情况,按顺序:
使用本指南https://askubuntu.com/questions/197248/java-on-ubuntu-server-12-04
安装了oracle java 7sudo 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 app with maven,它有一个用jdk7编译的maven依赖(org.MyLibraryClass)。那是我得到错误的那个。
在Grails中,我将BuildConfig.groovy更改为1.7而不是1.6:然后做了一个grails清理,重建,战争,重新部署。没有变化。grails.project.target.level = 1.7 grails.project.source.level = 1.7
任何想法接下来要尝试什么?
答案 0 :(得分:1)
使用Java 7编译代码并在Java 6下运行时的典型错误。
答案 1 :(得分:0)
我认为您的查询中的关键行是:
sudo service tomcat7 start
我认为它可能会触发OpenJDK的继承仍在系统中。你想要做的就是从你自己的环境中尝试tomcat。
以普通用户身份登录
java -version
/usr/share/tomcat7/bin/startup.sh
并检查。您还应该以干净的用户,root或其他方式登录,并检查java -version以进行检查。
如果所有其他方法都失败了,请转到/ etc / profile并确保路径到Oracle的Java / bin目录是环境的PATH变量中的第一个。
答案 2 :(得分:0)
我刚才遇到同样的问题,但现在已经解决了。
请检查此符号
/ usr / lib中/ JVM /默认-java的
它的默认链接是open-jdk,重置正确的jdk dirctory。
祝你好运!