2017-12-11 15 views
1

私はJavaにはとても新しいので、なぜこれが起こっているのか分かりません。inteliJでのjetty + Jerseyの動作がJarで失敗する

私はJersey + Jettyを使用して小さなJavaアプリケーションを開発しました。これはintelliJで実行すると完全に動作しますが、jarファイルでは動作しません。 私はlocalhost:2222に行きます。桟橋は私にindex.htmlページ を表示する必要がありますが、代わりにこのサーバーのコンテキストはこの要求と一致または処理されません。

ジャーはあなたの指定されたコンテキスト・パスは、その組み込み桟橋コードで/restであるこれらの命令How to build jars from IntelliJ properly?

public class App{ 
    private static final int SERVER_PORT = 2222; 

    public static void main(String[] args) throws Exception { 
     URI baseUri = UriBuilder.fromUri("http://localhost").port(SERVER_PORT) 
     .build(); 
     ResourceConfig config = new ResourceConfig(Resource.class); 
     Server server = JettyHttpContainerFactory.createServer(baseUri, config, 
     false); 

     ContextHandler contextHandler = new ContextHandler("/rest"); 
     contextHandler.setHandler(server.getHandler()); 

     ResourceHandler resourceHandler = new ResourceHandler(); 
     resourceHandler.setWelcomeFiles(new String[] { "index.html" }); 
     resourceHandler.setResourceBase("src/Web"); 

     HandlerCollection handlerCollection = new HandlerCollection(); 
     handlerCollection.setHandlers(new Handler[] { resourceHandler, 
     contextHandler, new DefaultHandler() }); 
     server.setHandler(handlerCollection); 
     server.start(); 
     server.join(); 
     } 
} 

答えて

2

物事のカップルは、この作業を取得するために必要であったはずです。 最初にsrc/webディレクトリが.jarに含まれていませんでした。

コードが.jar内のindex.htmlページの場所を見つけることができなかったため、この問題が解決されても問題は解決されませんでした。

私のコードを次のように変更しました。

String webDir = this.getClass().getClassLoader().getResource("src/Web").toExternalForm(); 

ResourceHandler resourceHandler = new ResourceHandler(); 
resourceHandler.setWelcomeFiles(new String[]{"index.html"}); 
resourceHandler.setResourceBase(webDir); 
0

を使用して作成されました。

表示されたメッセージでもそのことがわかります。

あなたはそれがルートになりたい場合は、あなたのコードはnew ContextHandler("/");代わり

+0

これも機能しません。 IDEからlocalhost:2222を実行すると、index.htmlページが意図したとおりに表示されます。しかし、私が瓶からそれを実行するとき、それはしません。 ジャージーが瓶から抜け落ちていると思いますが、それが本当であるかどうかを確認するにはJavaについて十分に知りません。 – EarlyDev

+0

あなたのjarファイルのindex.htmlは 'src/Web'フォルダに入っていますか? –

+0

はい、私は問題が今すぐ答えを投稿することがわかった – EarlyDev

関連する問題