Я пытаюсь создать "исполняемый" файл войны (java -jar myWarFile.war
), который запустит веб-сервер Jetty, на котором размещается webapp, содержащийся в файле WAR, который я выполнил.
Я нашел страницу, в которой описано, как сделать то, что я ищу:
Однако, следуя этому совету вместе с тем, как я думаю, что я должен сделать исполняемый банку (войну), не работает.
У меня есть задача Ant, создающая WAR файл с манифестом, который выглядит так:
Manifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 1.5.0_18-b02 (Sun Microsystems Inc.) Main-Class: Start
Содержимое WAR файла выглядит следующим образом:
> Start.class
> jsp
> build.jsp
> META-INF
> MANIFEST.MF
> WEB-INF
> lib
> jetty-6.1.22.jar
> jetty-util.6.1.22.jar
Когда я пытаюсь выполнить WAR файл, ошибка:
Exception in thread "main" java.lang.NoClassDefFoundError: org/mortbay/jetty/Handler
Caused by: java.lang.ClassNotFoundException: org.mortbay.jetty.Handler
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: Start. Program will exit.
Здесь, по-видимому, две ошибки: одна, где кажется, что файлы JAR не могут быть найдены, и один, где не может быть найден класс Start
.
Чтобы исправить первый, я поместил файлы Jetty JAR в базу WAR файла и попробовал еще раз - ту же ошибку. Я также попытался добавить атрибут WEB-INF/lib/<specific-JAR-files>
к атрибуту Class-Path
манифеста. Это тоже не сработало.
Есть ли у кого-нибудь представление о том, что я делаю правильно/неправильно, и как я могу запустить этот исполняемый файл WAR?