2017-09-06 4 views
5

Working Soap client exampleでSOAPの例をとり、ファイルSOAPClientSAAJ.javaに入れて、コンパイルしようとしました(Openjdk Debianの上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 

、私は

[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オプションがマニュアルページに記載されていないのはなぜですか? (Debianのopenjdk 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を指定すると、すべてのEEモジュールにアクセスできます。

関連する問題