Linux

無法啟動 tomcat6:Java 錯誤(執行緒“main”中的異常)

  • September 27, 2012

在 CentOS 6.3 上安裝 tomcat6 後,我無法啟動 tomcat6 伺服器。

root@host [/var/log/tomcat6]# service tomcat6 start
Starting tomcat6:                                          [  OK  ]

雖然它說OK,我無法訪問http://mydomain.com:8080

catalina.out

Exception in thread "main" java.lang.NullPointerException
  at java.lang.VMClassLoader.defineClass(libgcj.so.10)
  at java.lang.ClassLoader.defineClass(libgcj.so.10)
  at java.security.SecureClassLoader.defineClass(libgcj.so.10)
  at java.net.URLClassLoader.findClass(libgcj.so.10)
  at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.10)
  at java.lang.ClassLoader.loadClass(libgcj.so.10)
  at java.lang.ClassLoader.loadClass(libgcj.so.10)
  at gnu.java.lang.MainThread.run(libgcj.so.10)

Tomcat6 是使用 yum 安裝的:

yum -y install java tomcat6 tomcat6-webapps tomcat6-admin-webapps

當我試圖找到版本時tomcat6 version::

Exception in thread "main" java.lang.NoClassDefFoundError: org.apache.catalina.util.ServerInfo
  at gnu.java.lang.MainThread.run(libgcj.so.10)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.util.ServerInfo not found in gnu.gcj.runtime.SystemClassLoader{urls=[], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
  at java.net.URLClassLoader.findClass(libgcj.so.10)
  at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.10)
  at java.lang.ClassLoader.loadClass(libgcj.so.10)
  at java.lang.ClassLoader.loadClass(libgcj.so.10)
  at gnu.java.lang.MainThread.run(libgcj.so.10)

知道我應該怎麼做嗎?謝謝!

根據堆棧跟踪行末尾的“libgcj.so”字元串,您似乎正在嘗試使用 GNU Compiler for Java 執行 Tomcat。GCJ 不是一個完整的 Java 執行時環境,很可能是您的問題的根源。如果您的系統上沒有安裝真正的 JRE 或 JDK,或者未設置 JRE_HOME(或 JAVA_HOME)變數,則可能會發生這種情況。嘗試安裝真正的 JRE,如 OpenJDK 或 Sun/Oracle 的 JRE/JDK。

引用自:https://serverfault.com/questions/432391