2017-07-18 19 views
0

私はJAXBを初めて使用し、IntelliJを使用しています。私はオンラインチュートリアルに従っています。私がMarshall/UnMarshallに習っている時点で、私はソースコードをダウンロードしました。 Marshallingサンプルクラス内で、自動生成されたスタブをインポートしようとしていますが、IntelliJは、JAXBContext.newInstance(Patient.class)のパラメータとしてIntentiJをインポートしようとしても、そのインポートを認識しません。IntelliJで自動生成されたJAXBスタブのインポートが認識されない

enter image description here

キャッシュを無効にして再起動しました。このデモではEclipseを使用しています。私はIntelliJで新しいプロジェクトを試してみると自動的に生成されないデモの.classpathファイルに気付きました。

  1. インポートの問題は何ですか?
  2. これはまだJAXBプロジェクトの共通のプロジェクト構造ですか?

おかげで提案された解決策を以下

新しいスクリーンショット:

enter image description here

+0

「自動生成」は正確に何が行われましたか? –

答えて

1

プロジェクトのルートソースコードディレクトリがsrc/main/javaで、生成されたクラスはsrc/generated/com...にあるので、これは起こります。 src/generatedディレクトリをソースディレクトリとして設定するには、 - > Mark Directory as - > Source rootを右クリックします。

また、生成されたクラスをsrc/main/java/com...に移動することもできます。この2番目の選択肢を提案します。

新しい質問の後に編集: したがって、これらのクラスを生成するためにjaxb2を使用しています。私はあなたがこのように設定する必要があると思う:<generateDirectory>${project.basedir}/src/main/java</generateDirectory>generatedフォルダーのフォルダーなし。クラス内のパッケージ名はcom.bharatthippireddy...で始まり、generated.com.bharatthippireddy...で始まっていないので、ソースルートディレクトリにはcomフォルダが必要です。 META-INForgというツリーがあってもうまくいくと思います。私はあなたがどのようにそれらの木の生成を省略することができるかわからない、JAXB2のドキュメントがいくつかの手がかりを含んでいるかもしれない。

+0

ありがとうございます。最初の解決策は説明どおりに機能します。 2番目の答えは、より典型的なファイル構造を作成するため、ベストプラクティスのようです。しかし、私はmvn clean packageコマンドを使用しています。これは動作しない 'com'、 'META-INF'および 'org'トップレベル構造を生成します。これをmavenで定義する正しい方法は何でしょうか?私はオリジナルの投稿のスクリーンショットを更新します – Steerpike

+0

@Steerpikeおそらく ' false 'でMETA-INF生成を省略することができます –

+0

ありがとうございます、しかし、私は問題がPatient.classをJAXBDemo .class mavenクリーンパッケージの目標を実行しているとき - 配信される構造がインポートを許可しない – Steerpike

関連する問題