2017-06-07 12 views
1

xmlファイルを読み込んでitextに出力するプログラムを作成しようとしています。インポートステートメントでクラスの競合を解決する方法

しかし、インポート文でクラスの競合が発生しました。私はこの問題を解決する方法を知らない。

import org.dom4j.Document; 
import org.dom4j.DocumentException; 
import org.dom4j.Element; 
import org.dom4j.Node; 
import org.dom4j.io.SAXReader; 

import org.w3c.dom.NodeList; 
import org.w3c.dom.*; 

import com.itextpdf.text.Annotation; 
import com.itextpdf.text.BaseColor; 
import com.itextpdf.text.Chunk; 
import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Element; 
import com.itextpdf.text.Font; 
import com.itextpdf.text.FontFactory; 
import com.itextpdf.text.PageSize; 
import com.itextpdf.text.Paragraph; 
import com.itextpdf.text.Phrase; 
import com.itextpdf.text.pdf.PdfAction; 
import com.itextpdf.text.pdf.PdfPCell; 
import com.itextpdf.text.pdf.PdfPTable; 
import com.itextpdf.text.pdf.PdfWriter; 

dom4jとitextの間の "Document"クラスと "Element"クラスが競合しています。

誰かが回避策を知っていますか?私ができる日食の魔法はありますか?

+2

"私ができる魔法の魔法はありますか?" - "Source" - > "Organize imports"を選択し、あなたのクラスが必要とする全てのインポートを自動的に決定して追加できるかどうかを調べることができます。 –

答えて

0

ここでの回避策は、2つ(または多く)の競合するクラスのうちの1つだけをインポートすることです。次に、インポートされていないクラスに完全修飾クラス名を使用します。例えば:私はあなたのJavaファイル内のほとんどを使用するクラスのクラス/パッケージをインポート推薦う

com.itextpdf.text.Document doc; 

itextクラスを使用するとき

import org.dom4j.Document; 
// import com.itextpdf.text.Document;  <-- don't import this 

はその後、としてそれを参照してください。これにより、できるだけ完全なクラス名を入力する必要がなくなります。

0

このような場合、競合するクラスの1つに完全修飾クラス名を使用する必要があります。

0

コードでコードを使用する場合は、パッケージを指定する必要があります。 Documentorg.dom4j.Documentまたはcom.itextpdf.text.Documentのいずれかを指し、Elementorg.dom4j.Elementまたはcom.itextpdf.text.Elementを参照する可能性があるため、曖昧さがあります。

+0

2つのdom4jとitextに名前空間を追加する方法はありますか? – TYD

0

のインポート文Javaは完全修飾型名のエイリアスと同じように動作します。 2つ以上の型に対して同じエイリアスを使用しようとしても、あいまいさのために機能しません。

したがって、これらの競合する型のいずれにもimportステートメントを使用せず、完全修飾名(パッケージ+型名)を使用するか、それらの型のいずれか1つのみをインポートしないでください。

+0

Iveは完全修飾名を試しました。しかし、私はまだインポートステートメントでエラーを取得しています。 – TYD

+0

競合するすべてのインポートステートメントを削除する必要があります。 'import org.w3c.dom。*'を試してみてください。多くの型をインポートします。 Configのeclipseは '*'インポートを使用しません。一つの紛らわしい競合は 'import org.dom4j.Document;'と 'import com.itextpdf.text.Document;'です。少なくとも1つは削除する必要があります。同じタイプ名で終わる他のインポートについても同じことが言えます。 – Harmlezz

関連する問題