0

問題: 私の war を tomcat7 に展開すると、 java.lang.UnsupportedClassVersionError: org.MyLibraryClass : Unsupported major.minor version 51.0 というエラーが表示されます

(これは、コードの実行時に使用された Java よりも新しいバージョンで Java をコンパイルするときに発生するエラーです。)

状況、順番:

  1. 仮想ボックス内の真新しいubuntu 12.04.1サーバー64ビット最小
  2. インストールされたtomcat6
  3. 私の戦争を展開しようとした
  4. エラーに気づき、ubuntu 12にはまだ古いJavaが付属しているため、Java7が必要であることに気づきました
  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. トムキャットはじめました

      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 バージョンがどこにも指定されていないことを確認しました。また、カタリナに尋ねて確認しました:

  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コードがオラクルのjre7で実行に失敗する可能性がある方法がわかりません。

私の戦争は、jdk7 でコンパイルされた maven 依存関係 (org.MyLibraryClass) を持つ、maven を使用した真新しい非常に基本的な hello world grails 2.1 アプリです。それは私がエラーを受け取るものです。

grails で、BuildConfig.groovy を 1.6 ではなく 1.7 に変更しました。

  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

クエリの重要な行は、私が思うに次の行です。

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 に答える