0

问题:将我的战争部署到 tomcat7 时,我收到错误 java.lang.UnsupportedClassVersionError: org.MyLibraryClass : Unsupported major.minor version 51.0

(这是使用比运行代码时使用的 java 更新的版本编译 java 时遇到的错误。)

情况,按顺序:

  1. 全新的 ubuntu 12.04.1 服务器 64 位最小,在虚拟机中
  2. 安装tomcat6
  3. 试图部署我的战争
  4. 意识到错误,我需要java7,因为ubuntu 12仍然带有过时的java
  5. 使用本指南安装了 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
    
  6. 删除tomcat6并安装tomcat7

      sudo apt-get remove tomcat6-common
      sudo apt-get install tomcat7
    
  7. 将我的战争部署到tomcat7

  8. 启动tomcat

      sudo service tomcat7 start
    
  9. 检查了我的应用程序的日志文件。同样的错误。

  10. 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)
    
  11. 这是默认的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 清理、重建、战争、重新部署。没变。

知道接下来要尝试什么吗?

4

3 回答 3

1

使用 Java7 编译代码并在 Java6 下运行时的典型错误。

于 2013-10-09T12:36:29.017 回答
0

我刚才也有同样的问题,现在解决了。

请检查这个符号

/usr/lib/jvm/default-java

它的默认链接是 open-jdk,重置正确的 jdk 目录。

祝你好运!

于 2013-12-04T03:31:03.130 回答
0

您查询中的关键行是我认为的这一行:

sudo service tomcat7 start

我认为它可能会触发系统中仍然存在 OpenJDK 的继承。你想要做的是从你自己的环境中尝试 tomcat。

以您的普通用户身份登录

java -version
/usr/share/tomcat7/bin/startup.sh

并检查。您还应该以干净用户、root 或其他用户身份登录并检查 java -version 以进行检查。

如果一切都失败了,请转到 /etc/profile 并确保 Oracle 的 Java/bin 目录的路径是环境的 PATH 变量中的第一件事。

于 2012-10-14T20:53:04.783 回答