web-dev-qa-db-ja.com

Java 8およびWindowsおよびLinux上のTomcat 7

次の問題が発生しました:

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インスタンスの何が問題になっていますか?

11
Mitrakov Artem

みなさん、ありがとうございました。 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を本当に使用しますか?

12
Mitrakov Artem

各Tomcatインスタンスは、デフォルトでマシンのデフォルトJDKを使用します。デフォルトのJDKを変更するか(1つのTomcatインスタンスを使用する場合)、または別のJDKを使用するようにTomcatに指示します。

  1. Tomcatインスタンスごとに異なるJDKを設定するには:

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をエクスポートすることをお勧めします。

  1. UbuntuでデフォルトのJDKを変更するには:

    Sudo update-alternatives --install/your/path/to/JDK/bin/Java

または:

Sudo update-alternative --install  ${Java_HOME}/bin/Java

java_HOMEが定義されている場合。

3
Alex

Java_HOME環境変数は、Eclipseがコードを実行する方法とは無関係です。同様に、プロジェクトに対して表示したコンパイラー設定は、コードの実行方法には影響しません。

代わりに、使用している実行構成を確認し、そこで環境を確認する必要があります。 Java 8を使用していることを確認してください。すべて正常に動作しているはずです。[実行]ボタンの横にある三角形をクリックし、[実行構成...]を選択して、すべてのダイアログを開きます。次に、[JRE]タブを見て、正しいJREを使用していることを確認します。

0
Mind Peace