2013-12-12 77 views
7

我的目標是使用Ant啓動tomcat。這裏是我的腳本: 從Ant中啓動tomcat 7時發生java.lang.NoClassDefFoundError

<target name="tomcat-start"> 
    <java jar="${tomcat.home}/bin/bootstrap.jar" fork="true" dir="${tomcat.home}"> 
     <classpath> 
      <fileset dir="${tomcat.home}/bin"> 
       <include name="bootstrap.jar"/> 
       <include name="tomcat-juli.jar"/> 
      </fileset> 
     </classpath> 

     <jvmarg value="-Dcatalina.home=${tomcat.home}"/> 

    </java> 
</target> 

腳本執行後,我收到這樣的輸出:

java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory 
at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:60) 
Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
... 1 more 
Exception in thread "main" 
Java Result: 1 

我檢查org.apache.juli.logging.LogFactory類是在tomcat-juli.jar呈現!

什麼可能是錯的?

+0

您確定類路徑條目指向正確的位置嗎?你有列出的jar,但是你沒有顯示你存儲它的位置,Ant可能沒有在正確的目錄中查找它。 – chrylis

+0

@chrylis,我使用''檢查了文件路徑,並嘗試了在''ant任務中設置類路徑的不同方法。沒什麼幫助。 – ivstas

回答

6

對於一些未知的奇怪的原因,即使使用java -jar命令從命令行啓動它,tomcat也不會在我的系統中啓動。

但是,我設法啓動它使用java -cp "bin\bootstrap.jar;bin\tomcat-juli.jar" org.apache.catalina.startup.Bootstrap命令,從tomcat.home目錄執行。

在螞蟻的代碼不相同:

<exec executable="java" dir="${tomcat.home}"> 
    <arg line="-cp bin\bootstrap.jar;bin\tomcat-juli.jar"/> 
    <arg value="org.apache.catalina.startup.Bootstrap"/> 
</exec> 
+0

我有完全相同的問題,謝謝你的迴應。我花了幾個小時嘗試google-ing發現的不同內容。您的解決方案完美運作我將''包裝在''中。 –

1

查看startup.sh tomcat的批處理文件或shell腳本。除了bootstrap.jar之外,它還有其他一些文件。檢查setclasspath.sh。它有所有的罐子正在上課路徑中設置。

其他更乾淨方法是從螞蟻調用startup.sh腳本。這將完成啓動Tomcat服務器所需的一切。

+0

我在windows上使用tomcat 7,它只包含'bin'目錄中的'bootstrap.jar','tomcat-juli.jar','Tomcat7.exe'和'Tomcat7w.exe' – ivstas

3

如果你想堅持使用卡塔利娜,正確的方法是添加\ setenv.bat中包含的內容:

set CLASSPATH=D:\tomcat\apache-tomcat-7.0.42\bin\bootstrap.jar;D:\tomcat\apache-tomcat-7.0.42\bin\tomcat-juli.jar 

我發現通過閱讀catalina.bat。有人可能想用適當的Tomcat文檔更新此文件

相關問題