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
对象的高度。此函数是图像 class 扩展的 com.lowagie.text.Rectangle
class 的一部分。
在 Eclipse 中编译这段代码时,IDE 很快识别出该函数来自 Rectangle
class 并且编译没有任何错误。
但是,如果我使用独立的ecj-4.4.jar
文件通过Batch Compiler(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 不报告它呢?
编辑:class路径中有这个 JAR 的两个版本,这就是错误似乎出现的原因。不幸的是,由于这是一个多人参与的大型项目,我无法从项目中删除重复的 JAR。但是,Eclipse IDE 在正确的 JAR 中查找该方法似乎没有任何问题,那么为什么编译器会出现此问题?
虽然 eclipse 从相应的项目中获取它的类路径设置,但批处理编译器没有。您必须将库包含到类路径中。
参见 the batch compiler's documentation here 并查看 -cp 选项。你应该在那里包含相应的库。
编辑:在两个类路径中使用相同的 jar 是不够的。您还必须考虑顺序。
我正在使用一个名为 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
对象的高度。此函数是图像 class 扩展的 com.lowagie.text.Rectangle
class 的一部分。
在 Eclipse 中编译这段代码时,IDE 很快识别出该函数来自 Rectangle
class 并且编译没有任何错误。
但是,如果我使用独立的ecj-4.4.jar
文件通过Batch Compiler(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 不报告它呢?
编辑:class路径中有这个 JAR 的两个版本,这就是错误似乎出现的原因。不幸的是,由于这是一个多人参与的大型项目,我无法从项目中删除重复的 JAR。但是,Eclipse IDE 在正确的 JAR 中查找该方法似乎没有任何问题,那么为什么编译器会出现此问题?
虽然 eclipse 从相应的项目中获取它的类路径设置,但批处理编译器没有。您必须将库包含到类路径中。
参见 the batch compiler's documentation here 并查看 -cp 选项。你应该在那里包含相应的库。
编辑:在两个类路径中使用相同的 jar 是不够的。您还必须考虑顺序。