2011-05-22 63 views
8

我有一個名爲Sample.war的war文件。在這個戰爭文件中,我有一個名爲「Maintest」的主類。我想從戰爭外側運行或執行Maintest類。如何執行此操作如何在war文件內部運行java類文件

+0

爲什麼你在戰爭中的主要類..你真的需要?戰爭還是罐子? – Premraj 2011-05-22 12:35:15

+0

http://stackoverflow.com/a/10021303/566092 – 2014-03-08 03:04:31

回答

4

戰爭文件只是帶有額外元數據的Jar文件。所以,你應該細做:

java -classpath application.war Maintest 

將從war文件application.war加載類Maintest並運行它

+2

戰爭中的類放在WEB-INF/classes下。你的建議不適用於這些。 – 2011-05-22 12:45:19

+0

http://stackoverflow.com/a/10021303/566092 - 這應該工作得很好,看起來如此,雖然沒有測試過。 – 2014-03-08 03:05:27

-1

戰爭的切入點是不是主類似於應用程序的方法。戰爭的入口點是web.xml,它由應用程序服務器讀取並用於將URL映射到servlet。

如果您確實需要測試戰爭,您可以使用像Jetty這樣的嵌入式應用服務器。

1

WAR文件旨在用於servlet容器部署,而不是用於獨立執行。

因此,沒有簡單的方法來做你想要的。爲主方法應用程序使用可執行的jar。

-1

與可執行jar不同,不會有可執行的war文件以及爲什麼要在war文件中運行類。 war文件中的類是由web容器/服務器直接/間接加載的。如果真的想在War文件內部的jar中運行一個類,那麼將jar放在classpath中就可以照常運行。

2

我張貼在這裏同樣的答案:How do I run a class in a WAR from the command line?

第1步:解開WAR文件。

jar -xvf MyWar.war 

第2步:進入目錄

cd WEB-INF 

第3步:運行主要與所有dependendecies

java -classpath "lib/*:classes/." my.packages.destination.FileToRun