У мене є клас Java, який має основний, і я раніше запускався як самостійний додаток із командного рядка, наприклад
java -jar myjar.jar params
Мені потрібно було перепакувати код, щоб він працював під apache, і весь мій код, включаючи клас точки входу зі старого jar, потрапив у файл WAR для зручності внесення на веб-сервер.
Однак я все ще хочу мати можливість запускати його з командного рядка, і код не змінився, і все там є, я просто не можу зрозуміти, як змусити його запуститися.
Ось що я спробував ...
Я припускав, що ВІЙНА була просто як баночка
java -jar mywar.war params
Це невдале твердження, що в маніфесті не визначено основного класу.
Я вручну додав маніфест до війни і спробував ще раз із тим самим ефектом.
Я помітив, що під час моєї війни у мене була папка під назвою META-INF, що містить manifest.mf, тому я додав до неї рядок, що оголошує мій основний клас як до звичайного маніфесту ...
Manifest-Version: 1.0
Main-Class: mypackage.MyEntryPointClass
Це дало a 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)
Я трохи погуглив, але не можу знайти нічого, що відповідає на моє запитання, і я прочитав тут кілька інших питань, які дещо відрізняються, тож я подумав, що опублікую.
Java 1.5, не те, що я думаю, що це має щось змінити.