[英]Eclipse JDT compiler says method is undefined, but Eclipse IDE doesn't
我正在使用一個名為iText的庫(已使用JAR文件添加到項目中)。 可以在這里看到其API: https : //coderanch.com/how-to/javadoc/itext-2.1.7/com/lowagie/text/Image.html
在我的項目中,我有一個簡單的Java文件,名為Worker.java
,它使用以下庫:
import com.lowagie.text.Image;
public class Worker {
public void createDetails() {
Image img;
try {
img = Image.getInstance("...");
float h = img.getHeight();
float w = img.getWidth();
...
} catch (Exception e) {...}
}
}
在上面的代碼中,使用img.getHeight()
函數檢索了Image
對象的高度。 此函數是com.lowagie.text.Rectangle
類的一部分,該類是Image類的擴展。
在Eclipse中編譯此代碼時,IDE會快速識別出該函數來自Rectangle
類,並且編譯時沒有任何錯誤。
但是,如果我使用獨立的ecj-4.4.jar
文件通過批處理編譯器( BatchCompiler.compile(...)
)編譯項目,則編譯器將報告以下錯誤:
1. ERROR in C:\...\Worker.java (at line 7)
float h = img.getHeight();
^^^^^^^^^
The method getHeight() is undefined for the type Image
----------
我只是不知道為什么會引發此錯誤。 如果是真正的錯誤,那么為什么Eclipse也不會報告它呢?
編輯:在類路徑中有這個JAR的兩個版本,這就是為什么錯誤似乎會出現的原因。 不幸的是,由於這是一個包含多個人的大型項目,所以我無法從項目中刪除重復的JAR。 但是,在正確的JAR中找到該方法,Eclipse IDE似乎沒有任何問題,那么為什么編譯器會出現此問題?
eclipse從相應項目中獲取類路徑設置,而批處理編譯器則沒有。 您必須將庫包含到類路徑中。
請參閱此處的批處理編譯器文檔,並查看-cp選項。 您應該在其中包括相應的庫。
編輯:在兩個類路徑中具有相同的jars是不夠的。 您還必須考慮訂單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.