簡體   English   中英

Eclipse JDT編譯器表示方法未定義,但是Eclipse IDE並未定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM