我正在尝试编写一个读取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之间的类是冲突的。
有没有人知道解决方法?我可以做任何日食吗?
答案 0 :(得分:0)
在这种情况下,您应该在使用冲突类时使用完全限定的类名。
答案 1 :(得分:0)
您需要在代码中使用它们时指定包。
否则会出现歧义,因为org.dom4j.Document
可以引用com.itextpdf.text.Document
或Element
,而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语句,并使用其完全限定名称(包加类型名称)或仅导入其中一种类型。