问一个最基本的问题,再线等待!!!
在编译一个包时,如果"包目录"不在当前目录,要指明-classpath.而包中是java文件呀.这说明-classpath指的是java文件路径.
如果在CLASSPATH环境变量中,指明一个文件件(这个文件夹专门存放.class)文件,用java 命令就可以在任何地方运行里面的.class文件. 但是在这个文件夹里放入*.java文件就不能在任何地方用javac *.java了.
所以我现在为迷惑:javac命令中的-classpath指的是.java文件路径还是.class文件路径?
另外-sourcepath指的是*.java还是啊*.class的路径?
我的一个源文件在g:\myjava下.
g:\>javac -sourcepath \myjava test.java
就不能通过.
但是
g:\>javac \myjava\test.java就无疑通过了.
问题点数:0、回复次数:24Top
1 楼qeveeqnui()回复于 2003-11-04 20:04:11 得分 0
高手们指点一下,我是初学者.
急盼.Top
2 楼qeveeqnui()回复于 2003-11-04 20:26:28 得分 0
等了半天也没有人回答,我的分真的没人要了吗?Top
3 楼grgh2000(太阳)回复于 2003-11-04 20:40:20 得分 0
javac命令中的-classpath指的是为编译你的*.java文件所需要的类路径Top
4 楼RAYLI(乔乔)回复于 2003-11-04 20:40:57 得分 0
-classpath 指的是类文件的位置就是.java的位置
-sourcepath 是源文件的位置Top
5 楼grgh2000(太阳)回复于 2003-11-04 20:41:58 得分 0
-sourcepath没用过,一般编译大量的文件时我会用ant,或者ide工具.Top
6 楼grgh2000(太阳)回复于 2003-11-04 20:47:15 得分 0
to:RAYLI(乔乔)
-classpath 指的是类文件的位置就是.java的位置
你是不是写错了?
Top
7 楼grgh2000(太阳)回复于 2003-11-04 20:52:48 得分 0
比如要编译当前目录下的test.java,而该类中用到了在某folder下的类则
java -classpath folder test.java
这里的folder是文件夹路径(相对/绝对都可以)
Top
8 楼qeveeqnui()回复于 2003-11-04 22:43:07 得分 0
大家可能没有看懂我的问题.
如果照大家所言:classpath 的路径指的是*.java文件所在的路径,那么.我在CLASSPATH环境变量中设置的文件夹(我在里面放的是*.class),就不能用java *直接运行了.
Top
9 楼caiyi0903(willpower)回复于 2003-11-04 22:53:30 得分 0
可以直接运行啊,只有是CLASSPATH设置的路径!Top
10 楼loveyousomuch(★Allen★)回复于 2003-11-04 22:53:33 得分 0
javac命令中的-classpath指的是为编译你的*.java文件所需要的类路径
注意:
这类是指已经编译好了的.class文件,而不是.java文件!!!
-sourcepath这个参数用的不多(基本就没用过!!)
Top
11 楼qeveeqnui()回复于 2003-11-04 23:10:51 得分 0
但是如果有一个testprogram.java用到一个包比如是Geometry包.
那么我直接编译testprogram.java而不用编译包也行呀.不用预先编译包呀.
何谈已经编译好的.class文件呢?
还有,有没有办法给*.java设置一个路径,让javac 在任何地方访问到他.
我现在只能做到让java命令在任何地方访问到*.class文件(即在Top
12 楼qeveeqnui()回复于 2003-11-04 23:17:54 得分 0
我大概清楚了.
我已经实现了java命令在任何地方,直接访问某一个文件夹下的 *.class文件.
(即在CLASSPATH中把放置*.class文件的文件夹包括进去)
但是如何让javac 命令在任何地方,直接访问某一个文件夹下的 *.java文件.
Top
13 楼Crystal_arrow(迷茫)回复于 2003-11-05 00:10:32 得分 0
enTop
14 楼qeveeqnui()回复于 2003-11-05 08:52:50 得分 0
但是如何让javac 命令在任何地方,直接访问某一个文件夹下的 *.java文件.Top
15 楼hyhu(先飞笨鸟)回复于 2003-11-05 08:57:52 得分 0
加java/bin的路径到path中!Top
16 楼qeveeqnui()回复于 2003-11-05 09:12:17 得分 0
不是这个意,我说的不对,就是让javac访问"不是当前目录中的任何*.java"文件.
呵呵.Top
17 楼qeveeqnui()回复于 2003-11-05 09:27:20 得分 0
希望高手解决最后一个提出来的问题.Top
18 楼qeveeqnui()回复于 2003-11-05 09:27:40 得分 0
希望高手解决最后一个提出来的问题.Top
19 楼zpwly(选你所爱,爱你所选)回复于 2003-11-05 09:45:10 得分 0
classpath是放*.java文件的地方,用javac编译时会到你指定的classpath下去找要编译的java文件!同时你编译好的*.class文件也会默认放到这个目录!Top
20 楼zpwly(选你所爱,爱你所选)回复于 2003-11-05 09:50:46 得分 0
用java命令运行时,也是要找classpath中指定目录下的.class文件,你把.class移走他会报错的!
其实设置classpath就是为了让你无论在什么地方只要敲入java/javac就能运行,不必每次都输入文件所在的路径!
你想做到访问任何目录中的任何*.java,我还不会,如果可能你要是知道解决的通知我一声*^_^*Top
21 楼qeveeqnui()回复于 2003-11-05 09:56:35 得分 0
楼上所说不对吧,我觉得-classpath指的是为编译你的*.java文件所需要的类路径
注意:
这类是指已经编译好了的.class文件,而不是.java文件Top
22 楼qeveeqnui()回复于 2003-11-05 10:04:40 得分 0
现在想了想,刚才的回答也不妥.
在用javac编译一个包时,-classpath指的是*.java所在的路径.
但在用java时好像指的是-classpath指的是.class文件所在的路径.
所以现在越来越糊涂了.
zpwly第二次好象和我相同了.Top
23 楼funey111(依明)回复于 2003-11-05 11:02:39 得分 0
結論1
如果您的類別屬於某個package,那麼您就應該將它至於該
package 所對應的相對路徑之下。舉例來說,如果您有個類別叫
做C,屬於xyz.pqr.abc 套件,那麼您就必須建立一個三層的目
錄xyz\pqr\abr,然後將C.java 或是C.class 放置到這個目錄下,
才能讓javac.exe 或是java.exe 順利執行。
結論2
當您使用javac.exe 編譯的時候,類別原始碼的位置一定要根據
結論一所說來放置,如果該原始碼出現在不該出現的地方(如
上述測試中B.java 同時存在d:\my 與d:\my\edu\nctu 之下),除
了很容易造成混淆不清,而且有時候抓不出編譯為何發生錯
誤,因為javac.exe 輸出的錯誤訊息根本無法改善問題。
結論3
編譯時,如果程式裡用到其他的類別,不需要該類別的原始碼
也一樣能夠通過編譯。
結論4
當您使用javac.exe 編譯程式卻又沒有該類別的原始碼時,類別
檔放置的位置應該根據結論一所說的方式放置。如果類別檔出
現在不該出現的地方(如上述測試中B.class 同時存在d:\my 與
d:\my\edu\nctu 之下),有很大的可能性會造成莫名其妙的編譯
錯誤。
結論5
結論一中我們提到,如果您有個類別叫做C,屬於xyz.pqr.abc
套件,那麼您就必須建立一個三層的目錄xyz\pqr\abr,然後將
C.java 或是C.class 放置到這個目錄下,才能讓javac.exe 或是
java.exe 順利執行。但是這個新建的目錄應該從哪裡開始呢?答
案是:“可以建立在任何地方”。但是您必須告訴java.exe 與
javac.exe 到哪裡去找才行, 告訴的方式就是利用它們的-
classpath 選項。
為什麼javac.exe 用的是-classpath
d:\,而java.exe 如果不用-classpath d:\;.而只用-classpath d:\卻無
法執行呢?其實這不是什麼大問題,如果做更多的測試,您將
可以發現對javac.exe 來說,不管-classpath 選項如何指定,“目
前所在的目錄( 即”.” ) ” 一定會被包含在其中, 但是對
java.exe 來說就不是如此了,java.exe 會忠實地使用您所指定的
路徑,不會擅加路徑到-classpath 選項之中。
如果您設定了環境變數
CLASSPATH,而在使用java.exe 或javac.exe 的時候也使用了-
classpath 選項,那麼環境變數將視為無效,而改為以了-classpath
選項所指定的路徑為準。
環境變數CLASSPATH 與-classpath 選項分別所指定的路徑並不
會有加成效果。
結論6
ZIP 檔的效力和單純的目錄是一樣的,如果您在-classpath 選項
指定了目錄,就是告訴java.exe 和javac.exe 到該目錄尋找類別
檔;如果您在-classpath 選項指定了ZIP 檔的檔名,那麼就是請
java.exe 和javac.exe 到該壓所檔中尋找類別檔。
即使是在壓縮檔中,但是該有的相對路徑還是要有,否則
java.exe 和javac.exe 仍然無法找到他們所需要的類別檔。
前面我們曾說過,對javac.exe 來說,不管-classpath 選項如
何指定,“目前所在的目錄(即. )”一定會被包含在其中。從上
述測試可以得知,這個預設的路徑一定是附加在我們額外指定的路
徑或JAR 檔之後.
Top
24 楼sun2927(小健)回复于 2003-11-06 12:28:24 得分 0
upTop




