埋め込まれた Jetty とコードの単一の「FAT」jar を作成しようとしています。残念ながら、jar から実行すると、次のエラーが発生します。No Spring WebApplicationInitializer types detected on classpath
jarファイルを開梱すると、問題なく動作します。
問題は、アプリを jar から実行できるか、またはアンパックする必要があるかということです。
サンプル プロジェクトと問題を再現する手順を次に示します。
git clone https://github.com/steveliles/jetty-embedded-spring-mvc-noxml.git
cd jetty-embedded-spring-mvc-noxml
mvn clean install
cd target
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 から直接この作業を行うにはどうすればよいでしょうか?
==更新==
プロジェクトの作成者が問題を解決しました。次のコードは、影付きの jar から Web アプリケーションを取得するために必要でした。
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);
}
}
};