java -jar myWarFile.war
),它将启动托管在WAR文件中的webapp的Jetty web服务器。我找到了一篇描述如何制作这种文件的网页:
然而,按照那个建议以及我认为制作可执行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
类无法找到。
要解决第一个问题,我将 Jetty JAR 文件放在 WAR 文件的根目录下,再试了一次,但仍然出现相同的错误。我还尝试将 WEB-INF/lib/<specific-JAR-files>
添加到清单文件的 Class-Path
属性中,但也没有起作用。
是否有人能够解释一下我做得对/错的地方,并告诉我如何使这个可执行的 WAR 文件运行起来呢?