如何解决import语句中的类冲突

时间:2017-06-07 14:30:38

标签: java

我正在尝试编写一个读取xml文件并打印到itext的程序。

但是,我在import语句中遇到了类冲突。我不知道如何解决这个问题。

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之间的类是冲突的。

有没有人知道解决方法?我可以做任何日食吗?

4 个答案:

答案 0 :(得分:0)

在这种情况下,您应该在使用冲突类时使用完全限定的类名。

答案 1 :(得分:0)

您需要在代码中使用它们时指定包。 否则会出现歧义,因为org.dom4j.Document可以引用com.itextpdf.text.DocumentElement,而org.dom4j.Element可以引用com.itextpdf.text.Element或{{1}}。

答案 2 :(得分:0)

此处的解决方法是仅导入两个(或许多)冲突类中的一个。然后使用未导入的类的完全限定类名。例如:

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

然后在使用itext类时,请将其称为:

com.itextpdf.text.Document doc;

我建议导入您在Java文件中使用最多的类/类包。这样可以避免必须尽可能多地键入完全限定的类名。

答案 3 :(得分:0)

Java 中的导入语句就像完全限定类型名称的别名一样。由于含糊不清,尝试对两种或更多种类型使用相同的别名是行不通的。

因此,请不要对任何冲突类型使用import语句,并使用其完全限定名称(包加类型名称)或仅导入其中一种类型。