从Linux上的命令行启动Tomcat 7时出现问题,日志显示如下:
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)
从谷歌search我明白,我可以忽略的第一个位,但我想知道是否这是指示的Java版本试图使用,因为它一直说Java 6.“不支持major.minor版本51.0”我明白意味着我有Java版本的问题莫名其妙。
我使用ant构build了它有问题的类(使用BCrypt的自定义域),运行ant -v显示它正在使用Java 7编译,这正是我想要的。 我已经设置了JAVA_HOME和JDK_HOME来使用Java 7(它们都指向相同的地方,据我所知)。
我还有什么遗漏? 如果需要更多信息,请告诉我。 我真的很感激任何指向哪里我应该寻找什么是错的。 谢谢。
ETA更多的信息在评论中的每个问题:我通过命令行启动tomcat。 我只是从tomcat的基本目录中执行./bin/startup.sh。 我从Apache网站下载了tomcat。 我得到了核心tar.gz版本,并在昨晚解压缩(我只有以前版本6,并想升级)。 这也不是我个人的机器; 我只有用户权利,如果有关系。
打开tomcat/bin
目录并更改catalina.sh
JAVA_HOME
parmater
我不认为给出的回答是正确的。 事实上,major.minor异常意味着您安装的当前Java版本不符合最低要求。 特别是,你的错误说51(这是Java SE 7的内部代码)。 所以要解决你实际需要安装Java 7的问题。
确保JRE_HOME被设置为JRE1.6(或更高)。
另外,只是一个陷阱。 如果您有两个Tomcat安装(即Tomcat8和Tomcat7),请确保您的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=