i am having war file called Sample.war. in this war file i have the main class called "Maintest" .i want to run or execute the Maintest class from out side the war .how to do this
5 Answers
same answer as I posted here: How do I run a class in a WAR from the command line?
Step 1: Unwrap the War file.
jar -xvf MyWar.war
Step 2: move into the directory
cd WEB-INF
Step 3: Run your main with all dependendecies
java -classpath "lib/*:classes/." my.packages.destination.FileToRun

- 1
- 1

- 2,406
- 15
- 26
War files are just Jar files with extra metadata. So, you should be fine to do:
java -classpath application.war Maintest
That will load the class Maintest from the war file application.war and run it

- 47,320
- 10
- 111
- 156
-
4Classes in wars are placed under WEB-INF/classes. Your suggestion will not work for these. – Thorbjørn Ravn Andersen May 22 '11 at 12:45
-
http://stackoverflow.com/a/10021303/566092 - this should work fine, looks so, haven't tested though. – coding_idiot Mar 08 '14 at 03:05
WAR files are intended for servlet container deployment and not for stand-alone execution.
Hence, there is no easy way to do what you want. Use executable jars for main-method application.

- 73,784
- 33
- 194
- 347
The entry point of a war is not a main method like it is for an application. The entry point of a war would be the web.xml, which is read by the application server and used to map urls to servlets.
If you really need to test a war, you could use an embedded application server like Jetty.

- 7,784
- 1
- 32
- 36
Unlike executable jar there won't be executable war file and why to run class inside war file. Classes inside war files are directly/indirectly loaded by web container/server. if really want to run a class inside a jar which is inside war file, then putting the jar in classpath it can be run as usual.

- 483
- 5
- 9