2017-09-06 7 views
5

इसलिए मैंने एसओएपी उदाहरण Working Soap client example पर लिया, इसे SOAPClientSAAJ.java फ़ाइल में डाला, और इसे संकलित करने का प्रयास किया (Openjdk 9 डेबियन पर):"पैकेज javax.xml.soap मॉड्यूल java.xml.ws में घोषित किया गया है, जो मॉड्यूल ग्राफ में नहीं है"

[email protected] ~/javatest> javac SOAPClientSAAJ.java 
SOAPClientSAAJ.java:1: error: package javax.xml.soap is not visible 
import javax.xml.soap.*; 
       ^
    (package javax.xml.soap is declared in module java.xml.ws, which is not in the module graph) 
1 error 

कुछ Googling के बाद, मुझे पता चला है कि संकलन और

[email protected] ~/javatest> javac --add-modules java.xml.ws SOAPClientSAAJ.java 
[email protected] ~/javatest> java --add-modules java.xml.ws SOAPClientSAAJ 

काम करता है के रूप में चल रहा है। यह भी सामान्य पृष्ठभूमि के लिए इस वीडियो देखें: https://www.youtube.com/watch?v=y8bpKYDrF5I&t=20m17s

अब, सवाल:

  1. संकलक स्वचालित रूप से मॉड्यूल java.xml.ws जोड़ नहीं करना चाहिए? (चूंकि यह स्पष्ट रूप से जानता है कि इसकी आवश्यकता है) क्या यह javax.xml.soap में एक बग है?
  2. - मेरे मैन पेजों में --add-modules विकल्प क्यों नहीं प्रलेखित है? (डेबियन में ओपनजेडके 9)
  3. java.xml.ws मॉड्यूल को स्वचालित रूप से जोड़ने के लिए .java फ़ाइल में मुझे क्या लिखना चाहिए?

उत्तर

7

यह new Java 9 modules का परिणाम है। javax.xml.soap पैकेज actually a Java EE package है, और इसलिए अब दिखाई नहीं दे रहा है। वर्तमान वर्कअराउंड या तो --add-modules, जैसा आपने किया है, या modularize your code का उपयोग करना है।

आपके कोड को मॉड्यूलर करने के लिए इसे मॉड्यूल में पुनर्गठन की आवश्यकता होती है, और module-info.java फ़ाइल जो आपके द्वारा उपयोग किए जा रहे मॉड्यूल को निर्दिष्ट करती है। आपके मामले में, java.se.ee निर्दिष्ट करने से सभी ईई मॉड्यूल तक पहुंच होगी।

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