2017-09-06 29 views
5

Bu yüzden SOAP örneğini Working Soap client example numaralı dosyaya attım, SOAPClientSAAJ.java dosyaya yazdım ve derlemeyi denedim (Openjdk 9) Debian'daki:"paket javax.xml.soap modül grafiğinde olmayan java.xml.ws modülünde bildirildi"

[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 

bazı Googling sonra ben öğrendim o derleme ve

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

eserler olarak çalışan. Şimdi soruları https://www.youtube.com/watch?v=y8bpKYDrF5I&t=20m17s

: genel arka plan için bu videoyu izleyin

  1. derleyici otomatik modül java.xml.ws eklemek gerekmez mi? (Açıkça gerekli olduğunu bildiği için) Bu javax.xml.soap içinde bir hata mı?
  2. Manad sayfalarımda -add-modules seçeneği neden belgelenmiyor? (Debian içinde openjdk 9)
  3. java.xml.ws modülünü otomatik olarak eklemek için .java dosyasına ne yazmalıyım?

cevap

7

Bu, new Java 9 modules'un bir sonucudur. javax.xml.soap paketi actually a Java EE package ve şimdi görünür değil. Geçerli geçici çözüm, ya yaptığınız gibi --add-modules ya da modularize your code kullanmaktır.

Kodunuzu modüler hale getirmek, bunları modüller halinde yeniden yapılandırmayı ve kullandığınız modülleri belirten bir module-info.java dosyası dahil gerektirir. Durumunuzda, java.se.ee belirtmek tüm EE modüllerine erişim sağlayacaktır.