web-dev-qa-db-ja.com

Tomcatの起動時のエラー、サポートされていないメジャー/マイナーバージョン、環境変数は正しいようですが

LinuxのコマンドラインからTomcat7を起動するときに問題が発生し、ログに次のように表示されます。

Sep 24, 2012 8:54:10 AM org.Apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the jav
a.library.path: /usr/lib64/jvm/Java-1.6.0-openjdk-1.6.0/jre/lib/AMD64/server:/usr/lib64/jvm/Java-1.6.0-openjdk-1.6.0/jre/lib/AMD64:/u
sr/lib64/jvm/Java-1.6.0-openjdk-1.6.0/jre/../lib/AMD64:/usr/lib64/mpi/gcc/openmpi/lib64:/usr/Java/packages/lib/AMD64:/usr/lib64:/lib6
4:/lib:/usr/lib
Sep 24, 2012 8:54:10 AM org.Apache.Tomcat.util.digester.Digester startElement
SEVERE: Begin event threw error
Java.lang.UnsupportedClassVersionError: pms/security/BCryptRealm : Unsupported major.minor version 51.0
        at Java.lang.ClassLoader.defineClass1(Native Method)
        at Java.lang.ClassLoader.defineClass(ClassLoader.Java:634)
        at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:142)
        at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:277)
        at Java.net.URLClassLoader.access$000(URLClassLoader.Java:73)
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:212)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:205)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:321)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:266)
        at org.Apache.Tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.Java:144)
        at org.Apache.Tomcat.util.digester.Digester.startElement(Digester.Java:1276)
        at com.Sun.org.Apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.Java:504)
        at com.Sun.org.Apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.Java:182)
        at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.jav
a:1320)
        at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScann
erImpl.Java:2732)
        at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.Java:625)
        at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.Java:48
8)
        at com.Sun.org.Apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.Java:819)
        at com.Sun.org.Apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.Java:748)
        at com.Sun.org.Apache.xerces.internal.parsers.XMLParser.parse(XMLParser.Java:123)
        at com.Sun.org.Apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.Java:1208)
        at com.Sun.org.Apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.Java:525)
        at org.Apache.Tomcat.util.digester.Digester.parse(Digester.Java:1537)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:610)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:658)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.lang.reflect.Method.invoke(Method.Java:616)
        at org.Apache.catalina.startup.Bootstrap.load(Bootstrap.Java:281)
        at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:450)

グーグルから、無視できる最初のビットは理解できますが、Javaと表示され続けるため、使用しようとしているJavaのバージョンを示しているのではないかと思いました。6。「サポートされていないmajor.minorバージョン51.0 "私が理解しているのは、Javaバージョンに何らかの問題があることを意味します。

問題のあるクラス(BCryptを使用するカスタムレルム)をantを使用して構築しました。ant-vを実行すると、Java 7でコンパイルされていることがわかります。 Java_HOMEとJDK_HOMEもJava 7を使用するように設定しました(私が知る限り、これらはすべて同じ場所を指しています)。

他に何が欠けていますか?さらに情報が必要な場合はお知らせください。何がうまくいかないのかをどこで探すべきかについての指針を本当に感謝します。ありがとう。

コメントの質問ごとにもう少し情報をETAします:コマンドラインからTomcatを起動しています。 Tomcatベースディレクトリから./bin/startup.shを実行するだけです。 Apache Webサイト からTomcatをダウンロードしました。コアtar.gzバージョンを入手して、昨夜それをアンパックしました(以前はバージョン6しか持っていなかったので、アップグレードしたいと思いました)。また、これは私の個人用マシンではありません。必要な場合は、ユーザー権限しかありません。

11
Maltiriel

Tomcat/binディレクトリを開き、Java_HOMEcatalina.shパラメータを交換します

10
Ilya

私は与えられた応答が正しいとは思わない。実際、major.minor例外は、インストールした現在のJavaバージョンが最小要件を満たしていないことを意味します。特に、エラーでは51(Java SE 7の内部コード)と表示されます。したがって、問題を修正するには、実際にJava7をインストールする必要があります。

3
juancancela

JRE_HOMEがJRE1.6(またはそれ以上)に設定されていることを確認します。

また、ただの落とし穴です。 Tomcatが2つインストールされている場合(つまり、Tomcat7とTomcat8)、CATALINA_HOME変数がTomcat8のパスに設定されていないことを確認してください。これもこの問題を引き起こすためです。 (最初はログを見落としていました!)

C:\devtools\Apache-Tomcat-7.0.47\bin>set CATALINA_HOME=C:\devtools\Apache-Tomcat-8.0.0-RC5

C:\devtools\Apache-Tomcat-7.0.47\bin>configtest.bat
Using CATALINA_BASE:   "C:\devtools\Apache-Tomcat-8.0.0-RC5"
Using CATALINA_HOME:   "C:\devtools\Apache-Tomcat-8.0.0-RC5"
Using CATALINA_TMPDIR: "C:\devtools\Apache-Tomcat-8.0.0-RC5\temp"
Using JRE_HOME:        "C:\Progra~1\Java\jdk1.6.0_45\jre\"
Using CLASSPATH:       "C:\devtools\Apache-Tomcat-8.0.0-RC5\bin\bootstrap.jar;C:\devtools\Apache-Tomcat-8.0.0-RC5\bin\Tomcat-juli.jar"
Exception in thread "main" Java.lang.UnsupportedClassVersionError: org/Apache/catalina/startup/Bootstrap : Unsupported major.minor version 51.0
        at Java.lang.ClassLoader.defineClass1(Native Method)
        at Java.lang.ClassLoader.defineClassCond(ClassLoader.Java:631)
        at Java.lang.ClassLoader.defineClass(ClassLoader.Java:615)
        at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:141)
        at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:283)
        at Java.net.URLClassLoader.access$000(URLClassLoader.Java:58)
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:197)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
        at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
Could not find the main class: org.Apache.catalina.startup.Bootstrap.  Program will exit.

Fyi、次を使用してCATALINA_HOMEの設定を解除できます。

set CATALINA_HOME=
2
Nick Grealy

同様の問題に直面し、互換性のないjdkバージョン1.6でTomcat8.5を使用していることがわかりました。その後、最新のJDKバージョン1.8をインストールし、問題が解決しました。お役に立てば幸いです。

0