2013-01-24 3 views
1

자바 가져 오기에 대한 혼란을 용서하십시오. 저는 파이썬 배경에서 왔습니다. 내가 프로젝트의 경로로 적용하여 itext-PDF jar 파일을 추가 한클래스에서 전체 JAR 라이브러리 가져 오기

public static void makeADoc (Person p, String outfile) throws DocumentException,FileNotFoundException{ 
     Document document = new Document; 
     PdfWriter.getInstance(document, new FileOutputStream(outfile)); 
     document.open(); 
     document.add(new Paragraph("Hello " + p.getFirst() + ",\n" + "You've just won the lotto!")); 
     document.close(); 
    } 

:

는 내가이 iText 라이브러리를 사용합니다 일부 코드가 있습니다. 나는 와일드 카드 import 문이 클래스의 시작 부분에 전체 라이브러리를 가져온 :

import com.itextpdf.*; 

그러나 이클립스는 여전히 나에게주고 빨간색은 문서 객체와 DocumentException 및 FileNotFound 예외 개체에 대한 오류를 밑줄. itextpdf에서 Document 클래스를 가져올 수있는 옵션이 주어졌지만 내 와일드 카드 명세서에서 다룰 것입니다. 무슨 일이야?

+1

이클립스에서'Ctrl-o'를 누르면 ** 수입 구성 **이되어 두통을 해결할 수 있습니다. 이름 충돌이있는 경우 적절한 클래스 이름 만 선택하면됩니다. – gaborsch

답변

6

FileNotFoundExceptionitextpdf 패키지가 아니며 패키지 java.io입니다. 따라서이 import 문을 추가해야합니다. 이와 같은 와일드 카드 가져 오기 문을 사용하면 네임 스페이스가 복잡해질 수 있으므로 때때로 나쁜 연습으로 간주됩니다.

또한 와일드 카드 문을 사용하면 com.itextpdf 패키지에있는 모든 클래스를 가져옵니다. 그러나 DocumentException 클래스는 com.itextpdf.text이 아니라 com.itextpdf이 아니므로이 가져 오기 문을 추가해야합니다. 자바에서는 하위 패키지에 대한 개념이 없다. 인간이 때때로이 비유를 사용한다. 따라서 com.itextpdf.textcom.itextpdf과 완전히 다른 패키지입니다.

+0

그래서 한 번에 한 번씩 수업을 가져 오는 것이 좋습니다. 예를 들어, Document Exception과 PdfWriter를 구현하면, 그냥 Command-1로 돌아가서 catchall 라이브러리를 가져 오는 대신 itext 라이브러리에서 가져올 수 있습니다. – user1427661

+1

일반적으로 와일드 카드를 사용하는 대신 필요에 따라 각 클래스를 가져 오는 것이 좋습니다. 하지만 예외가없는 규칙은 없습니다 :)이 질문을 살펴보십시오. http://stackoverflow.com/questions/147454/why-is-using-a-wild-card-with-a-java-import-statement -나쁜 – RoflcoptrException

관련 문제