次の問題が発生しました:
Java Apache Java Tomcat 7.0.54のターゲットJava-8上に構築されたサーブレットを使用したい。
ローカルマシン(Win-64、jdkビルド1.8.0-b132)で実行すると、完全に機能します。
しかし、それを本番環境(Debian GNU/Linux 7.5(wheezy)、jdk build 1.8.0-b132、Tomcat 7.0.54-2)にデプロイすると、次のようにスローされます。
Unsupported major.minor version 52.0 (unable to load class ru.tomtrix.fvds.servlets.ItemServlet)
...つまり、サポートされていないJava-8クラスです。では、TomcatのsameバージョンのWindowsおよびLinuxインスタンスの何が問題になっていますか?
みなさん、ありがとうございました。 Java_HOMEが適切に定義されていないことが判明しました(ログオフおよびMarko Topolnikが言及したように)。 / etc/default/Tomcat7を開き、このセクションを変更しました:
# The home directory of the Java development kit (JDK). You need at least
# JDK version 6. If Java_HOME is not set, some common directories for
# OpenJDK, the Oracle JDK, and various Java SE 6+ versions are tried.
#Java_HOME=/usr/lib/jvm/openjdk-6-jdk
Java_HOME=/path/to/my/jdk
...そして、すべてが機能し始めます! TomcatはデフォルトでOpenJDKのような内部JDKを本当に使用しますか?
各Tomcatインスタンスは、デフォルトでマシンのデフォルトJDKを使用します。デフォルトのJDKを変更するか(1つのTomcatインスタンスを使用する場合)、または別のJDKを使用するようにTomcatに指示します。
catalina.shは、JDKを使用するためにsetenv.shを呼び出します。存在しない場合は、CATALINA_BASE/binにファイルsetenv.shを作成します。 CATALINA_BASEはTomcatフォルダーを表します。 geditでsetenv.shを開きます。
Sudo gedit setenv.sh
この行を書きなさい:
export Java_HOME=/path/to/your/JDK
Tomcatは、catalina.shではなく、setenv.shでJava_HOMEをエクスポートすることをお勧めします。
UbuntuでデフォルトのJDKを変更するには:
Sudo update-alternatives --install/your/path/to/JDK/bin/Java
または:
Sudo update-alternative --install ${Java_HOME}/bin/Java
java_HOMEが定義されている場合。
Java_HOME環境変数は、Eclipseがコードを実行する方法とは無関係です。同様に、プロジェクトに対して表示したコンパイラー設定は、コードの実行方法には影響しません。
代わりに、使用している実行構成を確認し、そこで環境を確認する必要があります。 Java 8を使用していることを確認してください。すべて正常に動作しているはずです。[実行]ボタンの横にある三角形をクリックし、[実行構成...]を選択して、すべてのダイアログを開きます。次に、[JRE]タブを見て、正しいJREを使用していることを確認します。