2012-05-07 5 views
0

서브 라이브러리를 com.itextpdf.*으로 지정하면 프로그램을 올바르게 컴파일 할 수 있지만 어떤 이유로 든 import com.itextpdf.* 만 수행하면 컴파일이 실패합니다. 하지만 말했듯, 나는자바에서 가져 오기 오류가 있습니다.

import com.itextpdf.text.Font.*; 
import com.itextpdf.text.pdf.*; 

모두 같은 내가 사용하고있어 sublibraries을 지정하면 것은 잘 컴파일합니다. 실패 할 경우, "com.itextpdf 패키지가 존재하지 않습니다"라는 오류가 발생하지만 실제로 발생합니다. 나는 그것을 빌드 경로에 적절하게 포함 시켰고 Eclipse는 어떠한 경우에도 컴파일 오류를주지 않는다. Ant를 사용하여 빌드하려고하면 오류가 발생합니다.

이 시점에서 빌드를 얻는 데 사용할 하위 라이브러리를 지정해도 괜찮습니다. 그러나 나는 궁금해. 왜 앤트가 이것을 허락하지 않았을까?

답변

1

당신과 Eclipse는 자바 네임 스페이스를 계층으로 생각합니다. 그러나 Java 사양에서는 그렇지 않습니다. "com.itextpdf.text"와 "com.itextpdf.text.Font"사이에는 아무런 관련이 없습니다. 그들은 다른 문자열, 이야기의 끝입니다.

스타일의 문제로, Eclipse를 설정하여 자동으로 가져 오기를 구성하고 클래스의 가져 오기 섹션에서 사용하는 모든 클래스를 명시 적으로 지정하고자 할 수 있습니다. 이렇게하면 "com.itextpdf.text.Font.String"및 "com.itextpdf.text.pdf.String"이 모두 존재하지만 둘 중 하나만 참조하려는 경우 모호성을 피할 수 있습니다. 이 스타일은 emacs 나 vi에서 프로그래밍하는 경우 엄청나게 지루하고 불편할 것입니다.하지만 이클립스에서는 파일의 맨 위로 스크롤하지 않으면 자동으로 보이지 않습니다.

+0

그래,이게 무슨 일이야. Ant 컴파일러는 'com.itextpdf. *;'와 같은 기본적인 수준의 import 문을 이해하지 못했지만 Eclipse는이를 처리 할 수있었습니다. 나는 앞으로 내 수입 진술에 대해 더 분명히 할 것입니다. – Sal

관련 문제