我正在尝试创建一个"可执行"war文件(java -jar myWarFile.war),它将启动一个Jetty网络服务器,它托管我执行的WAR文件中包含的webapp.
我找到了一个页面,描述了如何制作我正在寻找的东西:
然而,遵循这个建议,以及我认为我应该制作一个可执行jar(战争)是不行的.
我有一个Ant任务创建一个带有清单的WAR文件,如下所示:
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
当我尝试执行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.
Run Code Online (Sandbox Code Playgroud)
这里似乎有两个错误:一个似乎无法找到JAR文件,另一个找不到Start类.
为了修复第一个,我将Jetty …