2017-09-14 9 views
13

मै मैनेन और के साथ अपनी परियोजना का निर्माण कर रहा हूं। मैं अपने pom.xml फ़ाइल में जोड़ दिया है:- संकलन पर केवल-मॉड्यूल

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>${maven-compiler-plugin.version}</version> 
    <configuration> 
     <source>${java.version}</source> 
     <target>${java.version}</target> 
     <compilerArgs> 
      <arg>--add-modules</arg> 
      <arg>java.xml.bind</arg> 
     </compilerArgs> 
    </configuration> 
</plugin> 

लेकिन फिर भी, मैं इस तरह इसे चलाने के लिए है अनुप्रयोग चलाने के लिए:

java -jar --add-modules java.xml.bind my-app.jar 

वहाँ से चलाने के लिए, आवेदन के निर्माण के लिए एक रास्ता है जावा कमांड लाइन तर्कों के लिए --add-modules java.xml.bind के बिना कमांड लाइन?

+0

से दूर जाने के रूप में मॉड्यूल के लिए एपीआई स्वसंपूर्ण की ओर पलायन के रूप में अच्छी तरह से सुनिश्चित लेकिन शायद: परिवर्तन अपने आप की जरूरत है अपने निर्भरता सूची में निम्नलिखित जोड़ने के लिए है गलत, आपने 'मेवेन-कंपाइलर-प्लगइन' में क्या किया है, केवल कंपाइलर 'जावैक' के लिए है, जिसे आपके प्रोजेक्ट को संकलित करने के लिए मेवेन द्वारा भी उपयोग किया जाता है, लेकिन रनटाइम 'जावा' के लिए नहीं, इसलिए आपको '-ड-मॉड्यूल' जोड़ना पड़ा 'जावा रनटाइम' जावा 'के लिए। – Tiina

+0

यह सही है, और यही कारण है कि मैंने सवाल पूछा है कि '--add-modules' को जोड़ने के बिना कैसे चलना है। – wbk

उत्तर

19

मैंने कुछ समय पहले this answer बनाया था जहां मैंने इसे जावा-9 में गैर-java.se पैकेजों को प्रकट करने के लिए अतिरिक्त जानकारी के रूप में उत्तर दिया था।

जोड़ा गया हिस्सा विशेष रूप से java.xml.* एपीआई के स्टैंडअलोन संस्करण का उपयोग करने पर केंद्रित है। अनुकूलित करने के लिए आप संभवतः jaxb-api:2.3.0 पर निर्भरता का उपभोग करना शुरू कर सकते हैं जिसे मॉड्यूल के रूप में लोड किया जा सकता है और क्लासपाथ से भी निष्पादित किया जा सकता है।

<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.3.0</version> 
</dependency> 

इस तरह आप मैं क्या लगता है कि एक deprecated piece of code.

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