1

埋め込まれた 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);
           }
       }
    };

参照: https://github.com/steveliles/jetty-embedded-spring-mvc-noxml/commit/789663310b2fa2bdc0b101658275758a26cec229

4

0 に答える 0