我正在尝试创建一个嵌入式Jetty和我的代码的单个“FAT”jar。不幸的是,如果我从jar中运行,我会收到此错误:No Spring WebApplicationInitializer types detected on classpath
如果我打开罐子的包装就可以了。
问题是我可以从jar运行应用程序还是必须解压缩?
以下是一个示例项目以及重现该问题的步骤:
git clone https://github.com/steveliles/jetty-embedded-spring-mvc-noxml.git
cd jetty-embedded-spring-mvc-noxml
mvn clean install
cd目标
java -jar jetty-noxml-1.0-SNAPSHOT.jar
您将获得此输出“...没有在类路径上检测到Spring WebApplicationInitializer类型...”。
但如果你这样做:
mkdir temp
cd temp
unzip jetty-noxml-1.0-SNAPSHOT.jar
java -cp。 com.sjl.Main
这样可以正常使用。
那么可以做些什么来直接从jar中解决这个问题而不首先解压缩呢?
==更新==
该项目的作者解决了这个问题。从阴影罐中拾取webapps需要以下代码:
parser = new AnnotationParser() {
@Override
public void parse(Resource aDir, ClassNameResolver aResolver) throws Exception {
if (aDir.isDirectory()) {
super.parse(aDir, aResolver);
} else {
super.parse(aDir.getURI(), aResolver);
}
}
};