2015-01-03 9 views
6

पर विफल रहा है मैंने वसंत के साथ बहुत लंबे संबंध के बाद ड्रॉपविज़ार्ड पर लौटने का फैसला किया। मुझे तुरंत पूर्ण बेरबोन रीस्ट सेवा मिल गई, और यह बिना किसी समस्या के चलाता है।सरल ड्रॉपविज़ार्ड 0.7.1 ऐप वैकल्पिक क्वेरीपैम डब्ल्यू/जावा 8

Dropwizard 0.7.1 और जावा 1.8 का उपयोग करना, केवल पोम प्रविष्टियों dropwizard कोर निर्भरता और Maven संकलक प्लगइन जावा 1.8, लागू करने के लिए के रूप में Dropwizard उपयोगकर्ता पुस्तिका द्वारा सिफारिश की

लेकिन, जैसा कि कर रहे हैं

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 

इस प्रकार नियंत्रक के लिए कोड के रूप में:

012,351 ही मैंने बुनियादी नियंत्रक करने के लिए वैकल्पिक QueryParam जोड़ने का प्रयास करते हैं, तो अनुप्रयोग निम्न त्रुटि (संक्षिप्तता के लिए कटौती) के साथ शुरू करने के लिए विफल रहता है
@Path("/") 
public class IndexController { 

    @GET 
    @Timed 
    public String index(@QueryParam("name") Optional<String> name) { 
     String saying = "Hi"; 

     if(name != null && name.isPresent()) { 
      saying += " " + name.get(); 
     } 

     return saying; 
    } 
} 

यदि मैं मिश्रण से वैकल्पिक हटा देता हूं, तो एप्लिकेशन ठीक ठीक चलता है। मैं वैकल्पिक-विशिष्ट कोड को शून्य जांच के साथ प्रतिस्थापित करता हूं और यह पूरी तरह से काम करता है।

क्या मुझे यहां कुछ मौलिक याद आ रही है? Google Guava वैकल्पिक और java.util.Optional दोनों एक ही त्रुटि के साथ विफल हो जाते हैं। (और हाँ, मैं संकीर्ण नीचे वैकल्पिक वस्तु के लिए क्या किया यह)

एक त्वरित गूगल/एसओ उपयोगी कुछ भी नहीं झुकेंगे खोज करते हैं, लेकिन एक संसाधन मैं

पहले से

धन्यवाद चूक गए हों करने के लिए मुझसे बात करने के लिए स्वतंत्र लग रहा है!

उत्तर

11

इसे पोस्ट करने के बाद क्षण, मैंने पाया कि यह मुद्दा जावा 1.8 का मेरा उपयोग था।

पोम प्रवेश::

<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

जावा 1.8 का उपयोग कर रहे हैं, तो मैं अपने ऐप को Java8Bundle जोड़ने के लिए यह Google Guava वैकल्पिक और java.util.Optional दोनों को ठीक काम करने में सक्षम बनाता है।

यदि मैं जावा 1.7 पर वापस आ जाता हूं और Google Guava वैकल्पिक का उपयोग करता हूं, तो यह ठीक काम करता है और मुझे Java8Bundle को शामिल करने की आवश्यकता नहीं है। मैं अब जावा 8 बंडल का चयन करूंगा, हालांकि, जावा 8 फीचर्स का उपयोग करने के लिए मेरे लिए आकर्षक है :)

चीयर्स!

+0

अमरूद वैकल्पिक डिफ़ॉल्ट रूप से ड्रॉपवार्ड द्वारा प्रबंधित किया जाता है, केवल FYI। जवाब चिह्नित करने के लिए मत भूलना। – Natan

+0

धन्यवाद, यह भ्रमित डीबगिंग का 45 मिनट का साहसिक था। – Joe

संबंधित मुद्दे