出於絕望lackideas我目前正在從eclipse插件中編譯單個文件。診斷java編譯器指示的「不正確的類路徑」
到目前爲止,我已經成功編譯了一個編譯單個.java文件的代碼,該文件沒有外部.class
(不在.jar
之內)依賴關係。
對於編譯過程,我知道所有依賴項.class
文件在哪裏,並且我使用-classpath
選項將該信息提供給編譯器。
目前,我打電話編譯如下:
String[] params = new String[]{
"-properties", propertiesFile,
"-g", "-preserveAllLocals",
"-classpath", classPath,
fileToCompile,
"-d", outputPath,
"-proc:none",
"-proceedOnError",
};
boolean result = BatchCompiler.compile(
params, new PrintWriter(outWriter), new PrintWriter(errWriter), null);
的變量:
- propertiesFile:存在,它包含的工作空間+不重複項目的設置(的合併以該順序)。
- classPath:包含多個由「;」分隔的路徑。 (這個有問題,見下)
- fileToCompile包含我想編譯的文件的絕對路徑。請注意,源文件夾中的這個文件是而不是。
- outputPath:項目的「bin」目錄。它從IProject對象本身獲取它。
您可能會發現其他選項here的含義。
classPath
給我一個錯誤。兩個班在這個測試項目中存在: 這是它的內容(除掉大部分的.jar從本地Java包括減少後的大小:
"C:/Program Files (x86)/java/jre1.8.0_66/lib/resources.jar";"C:/Program Files (x86)/Java/jre1.8.0_66/lib/rt.jar";D:/Users/user/runtime-EclipseApplication/Tests/bin"
我用這些作爲最後的嘗試「包括」在classpath :
"D:/Users/user/runtime-EclipseApplication/Tests/bin"
"D\:\Users\user\runtime-EclipseApplication\Tests\bin"
"D\\:/Users/user/runtime-EclipseApplication/Tests/bin"
"D\\:\\Users\\user\\runtime-EclipseApplication\\Tests\\bin"
下面是它給出錯誤中的輸出:
incorrect classpath: "D:/Users/user/runtime-EclipseApplication/Tests/bin"
----------
1. ERROR in D:\Users\user\runtime-EclipseApplication\.metadata\.plugins\myplugin\tmp\sources\Test2.java (at line 3)
public class Test2 extends Test{
^^^^^^^^
Test cannot be resolved to a type
我可以在自己的代碼斷言,只是之前的編譯器叫:
- 該類路徑目錄存在
- 那測試。類是在該目錄中
- 我使用的是默認的包在代碼執行
的時候我在做什麼錯在這裏?爲什麼將它分類到不正確的類路徑中?
我使用org.eclipse.jdt.core(v.3.10.2)依賴關係,我正在編譯eclipse Luna(4.4),這是我希望插件支持的最低版本。
由提出的錯誤,我可以猜測,你正在分別編譯每個文件,在你的具體情況下'Test2'類正在'Test'類之前編譯,因此你的錯誤**或**你正在編譯類單獨而不是一次全部。 **請記住,只是一個猜測** –
@JorgeCampos我正在編譯每個類別,正如你所提到的,但Test2正在編譯後測試。我還提到「我可以斷言**類路徑目錄存在**和** Test.class在該目錄** [...]」中。你提到的並不能解釋**「不正確的類路徑」**警告,儘管:(我認爲這是它找不到Test.class的根本原因 – brunoais