Я пытаюсь создать «исполняемый» файл войны (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?