2015-01-03 6 views
6

私は、Springとの非常に長い事の後にDropwizardに戻ることにしました。私はすぐに絶対ベアボーンRESTサービスを構築しましたが、問題なく実行できます。シンプルなDropwizard 0.7.1アプリケーションの失敗QueryParam with Java 8

として、しかしDropwizard 0.7.1およびJava 1.8、Dropwizardのユーザマニュアルが推奨するようにのみPOMエントリがdropwizardコア依存性およびJava 1.8、を強制するMavenのコンパイラプラグインである

を使用すぐに私は、基本的なコントローラにオプションQueryParamを追加しようとして、アプリケーションは次のエラー(簡潔にするためにカット)して起動に失敗:

INFO [2015-01-03 17:44:58,059] io.dropwizard.jersey.DropwizardResourceConfig: The following paths were found for the configured resources: 

    GET /(edge.dw.sample.controllers.IndexController) 

ERROR [2015-01-03 17:44:58,158] com.sun.jersey.spi.inject.Errors: The following errors and warnings have been detected with resource and/or provider classes: 
SEVERE: Missing dependency for method public java.lang.String edge.dw.sample.controllers.IndexController.index(java.util.Optional) at parameter at index 0 
Exception in thread "main" javax.servlet.ServletException: [email protected]30103b7==com.sun.jersey.spi.container.servlet.ServletContainer,1,false 

次のようにコントローラのコードは次のとおりです。

オプションをミックスから削除すると、アプリケーションはうまく動作します。私は、オプションの特定のコードをヌルチェックで置き換え、それは完全に動作します。

ここでは何か基本的なものがありませんか? Google Guava Optionalとjava.util.Optionalの両方が同じエラーで失敗します。

迅速なGoogleがSOに有用何も得られなかったSEARCH /(そして、はい、私は、任意のオブジェクトに狭いダウンしました)が、私は事前に

感謝を見逃しているかもしれリソースに私を指すこと自由に感じ!

答えて

11

これを投稿してから、Java 1.8を使用していることがわかりました。 Javaの1.8を使用している場合、私は私のアプリにJava8Bundleを追加する必要があります。

POMエントリ:

<dependency> 
    <groupId>io.dropwizard.modules</groupId> 
    <artifactId>dropwizard-java8</artifactId> 
    <version>0.7.0-1</version> 
</dependency> 

およびアプリケーション・クラスのコード:

@Override 
public void initialize(Bootstrap<SampleConfiguration> bootstrap) { 
    bootstrap.addBundle(new Java8Bundle()); 
} 

参照してください:https://github.com/dropwizard/dropwizard-java8

をこれにより、Google Guava Optionalとjava.util.Optionalの両方を正常に動作させることができます。

Java 1.7に戻してGoogle Guava Optionalを使用すると、うまく動作し、Java8Bundleを含める必要はありません。私はJava8Bundleを今のところ選んでいますが、Java8の機能を使うことで利益が上がります:)

乾杯!

+0

Guavaオプションは、デフォルトではdropwizardによって処理されます(FYIのみ)。答えに印を付けることを忘れないでください。 – Natan

+0

ありがとう、それは混乱したデバッグの45分の冒険でした。 – Joe

関連する問題