У меня есть класс Java, который имеет основную структуру, и я использовал ее как автономное приложение из командной строки, например.
java -jar myjar.jar params
Мне нужно было переупаковать код для запуска под apache, и весь мой код, включая класс точки входа из старой банки, попал в файл WAR, чтобы легко вставить его в веб-сервер.
Тем не менее, я все еще хочу иметь возможность запускать его из командной строки, и код не изменился и все там, я просто не могу понять, как его запустить.
Вот что я пробовал...
Я предполагал, что WAR была похожа на банку, поэтому
java -jar mywar.war params
Не получилось сказать, что в манифесте не было никакого основного класса.
Я вручную добавил манифест к войне и снова попытался с тем же эффектом.
Я заметил, что в моей войне у меня была папка с именем META-INF, содержащая файл manifest.mf, поэтому я добавил строку к объявлению моего основного класса, как и к нормальному манифесту...
Manifest-Version: 1.0
Main-Class: mypackage.MyEntryPointClass
Это дало noClassDefFoundError mypackage.MyEntryPointClass
, что является прогрессом. Это заставило меня поверить, что это был просто путь, поэтому я попробовал
Manifest-Version: 1.0
Main-Class: WEB-INF.classes.mypackage.MyEntryPointClass
Теперь я получаю ту же ошибку, но с трассировкой стека...
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)
Я немного искал Google, но не могу найти ничего, что отвечает на мой вопрос, и я прочитал здесь несколько других вопросов, которые немного отличаются друг от друга, поэтому я думал, что отправлю.
Java 1.5, а не то, что я думаю, что это должно иметь значение.