[英]Compiling java program with cp switch - unexpected behavior
使用javac的-cp開關時,我無法理解某些行為。 我在Windows 7計算機的目錄C:\\ A \\ B \\ C>中有兩個Java文件。 文件是Extend.java和TestExtend.java; 兩者都屬於軟件包“ package com.gonni.profile”。 我收到以下錯誤:
C:\A\B>javac -d . -cp C\Extend.java
javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options
C:\A\B>javac -d . -cp 39#$%$fe#%#$%FF#$%GWE C\Extend.java
C:\A\B>javac -d . -cp C\TestExtend.java
javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options
C:\A\B>javac -d . -cp 3458$^$%$%BF#W%V#$ C\TestExtend.java
C\TestExtend.java:6: cannot find symbol
symbol : class Extend
location: class com.gonni.profile.TestExtend
Extend exObj = new Extend();
^
C\TestExtend.java:6: cannot find symbol
symbol : class Extend
location: class com.gonni.profile.TestExtend
Extend exObj = new Extend();
^
2 errors
C:\A\B>javac -d . -cp . C\TestExtend.java
C:\A\B>
Extend.java是:
package com.gonni.profile;
class Extend {
class Inner {
}
}
TestExtend.java是:
package com.gonni.profile;
class TestExtend {
public static void main(String[] args) {
Extend exObj = new Extend();
}
}
不好意思地說,但是我不明白您想做什么:編譯程序或使javac
失敗?
C\\TestExtend.java
似乎錯誤。 您可能是指C:\\TestExtend.java
嗎? 39#$%$fe#%#$%FF#$%GWE
? 您了解-cp
是什么意思嗎? com.gonni.profile
包。 這意味着它們必須從源根開始位於目錄com/gonni/profile
。 -d .
。 這是默認值。 -cp
(即CLASSPATH)。 該怎么辦?
C:\\myproj
。 com.gonni.profile
,則應創建目錄C:\\myproj\\com\\gonni\\profile
。 C:\\proj
javac com/gonni/profile/*.java
祝好運。
在這種情況下,您的源文件應位於目錄C:\\ A \\ B \\ C \\ com \\ gonni \\ profile下-不直接位於C:\\ A \\ B \\ C中。 選項-cp指定查找其他編譯類的路徑-而不是源文件。
如果要指定源樹的位置,請使用-sourcepath :
javac -sourcepath C C/com/gonni/profile/TestExtend.java
Javac要求列出必須在命令行中編譯的所有文件。 您不能只列出一個,而是自動列出其他人。 結果,大型,現實世界的項目很難以這種方式構建。 另外,修復其他人已經指出的一些小錯誤。
因此,如果您想成為命令行大師,請學習Eclipse,NetBeans等用於基於IDE的開發,或者學習Maven,Ant,Make等。 僅在這些時間直接調用javac並不常見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.