Jak uruchomić klasę z WAR z linii poleceń?
Mam klasę Java, która ma główną i kiedyś uruchamiałem jako samodzielną aplikację z linii poleceń, np.
java -jar myjar.jar params
Musiałem przepakować kod, aby uruchomić go w apache, a cały mój kod, łącznie z klasą punktu wejścia ze starego słoika, znalazł się w pliku WAR w celu łatwej depilacji na serwerze WWW.
Jednak nadal chcę być w stanie uruchomić go z wiersza poleceń, a kod nie zmienił się i wszystko jest na swoim miejscu. Po prostu nie wiem, jak go uruchomić.
Oto co próbowałem ...
Przypuszczałem, że WOJNA jest jak słoik
java -jar mywar.war params
To nie powiodło się, mówiąc, że w manifeście nie zdefiniowano żadnej głównej klasy.
Ręcznie dodałem manifest do wojny i spróbowałem ponownie, z tym samym skutkiem.
Zauważyłem, że podczas mojej wojny miałem folder o nazwie META-INF zawierający manifest.mf, więc dodałem linię do tej deklarującej moją główną klasę, tak jak do normalnego manifestu ...
Manifest-Version: 1.0
Main-Class: mypackage.MyEntryPointClass
To dałonoClassDefFoundError mypackage.MyEntryPointClass
, co jest pewnego rodzaju postępem. To doprowadziło mnie do przekonania, że to tylko kwestia ścieżki, więc spróbowałem
Manifest-Version: 1.0
Main-Class: WEB-INF.classes.mypackage.MyEntryPointClass
Otrzymuję teraz ten sam błąd, ale ze śledzeniem stosu ...
Exception in thread "main" java.lang.NoClassDefFoundError: WEB-INF/classes/mypackage/MyEntryPointClass (wrong name: mypackage/MyEntryPointClass)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Poszukuję trochę, ale nie mogę znaleźć niczego, co odpowiadałoby na moje pytanie, i przeczytałem tutaj kilka innych pytań, które są nieco inne, więc pomyślałem, że będę pisać.
Java 1.5, nie, że myślę, że to powinno mieć znaczenie.