Linuxでは、Java 7を使用して記述されたWebアプリケーションをTomcat6にデプロイすることは可能ですか?その場合、それを機能させるにはどの構成を変更する必要がありますか?
Java_HOME
ファイルのTomcat6.conf
変数を変更して再起動しようとしましたが、TomcatマネージャーのWebページによると1.6を使用しており、1.6以下で記述されたアプリケーションのみが正しくデプロイされます。
Jdk1.6と1.7の両方を異なる場所にインストールしています。
Java JDK 1.7.0を使用してサーブレットをコンパイルしたときに、大きな問題が発生しました。ランタイムmanor.majorバージョンエラーのためにTomcatが起動しませんでした。
Tomcat6でJDK1.7を使用してクラスを実行するには、次のようにします。
Root権限でファイル/etc/init.d/Tomcat6
を開きます。
83行目にJDK_DIRS
という変数があります。
行の先頭に#
を追加してコメントアウトします。
次のように書いてください:JDK_DIRS="/usr/lib/jvm/Java-1.7.0-openjdk-i386"
Tomcatを保存して再起動します
GUIログイン用のTomcat-users.xml
以外の構成ファイルを設定せずに、デフォルトのTomcatインストールを使用しています。
Apache Tomcat 6.0.35および6.0.16は、それぞれJVM 1.7.0_03-b05(Windows + Linux)で実行されています。
Java_HOMEはJDKフォルダを指している必要があります。例えば。:
C:\Program Files\Java\jdk1.7
(Windows)
または
/usr/lib/jvm/Java-6-Sun
(Ubuntu、このリンクはJDKのインストールを指しています)
同様の問題が発生しましたが、JDK1.7にはTomcat6との下位互換性がないようです。Tomcat7にデプロイするか、JDK1.6を使用して再コンパイルする必要があります。
違いが生じたことがわかりましたwhichJava 7はTomcat6で使用されました。
#Java_HOME=/usr/lib/jvm/Java-7-openjdk ## Did not work
Java_HOME=/usr/lib/jvm/Java-7-Oracle ## DID WORK
「機能しませんでした」とは、具体的には、Webアプリを起動したときにClassNotFoundException: Java.lang.AutoCloseable
。このインターフェースは Java 7 で新しくなりました。
Caused by: Java.lang.NoClassDefFoundError: Java/lang/AutoCloseable
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(ClassLoader.Java:751)
at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:144)
at org.Apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.Java:2818)
at org.Apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.Java:1159)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1647)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1526)
at org.springframework.util.ClassUtils.forName(ClassUtils.Java:249)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.Java:395)
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.Java:1349)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.Java:1320)
... 47 more
Caused by: Java.lang.ClassNotFoundException: Java.lang.AutoCloseable
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1680)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1526)
... 58 more