Я пытаюсь создать «исполняемый» файл войны (java -jar myWarFile.war
), который запустит веб-сервер Jetty, на котором размещено веб-приложение, содержащееся в файле WAR, который я выполнил.
Я нашел страницу, на которой описано, как сделать то, что Я ищу:
Однако следование этому совету вместе с тем, как я думаю, что я должен сделать исполняемый файл jar (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
.
Чтобы исправить первую ошибку, я поместил JAR-файлы Jetty в базу WAR-файла и попытался снова — та же ошибка. Я также попытался добавить WEB-INF/lib/<specific-JAR-files>
к атрибуту Class-Path
манифеста. Это тоже не сработало.
Кто-нибудь знает, что я делаю правильно/неправильно и как я могу запустить этот исполняемый файл WAR?