javac命令中的-classpath指的是为编译你的*.java文件所需要的类路径

解决方案 »

  1.   

    -classpath 指的是类文件的位置就是.java的位置
    -sourcepath 是源文件的位置
      

  2.   

    -sourcepath没用过,一般编译大量的文件时我会用ant,或者ide工具.
      

  3.   

    to:RAYLI(乔乔) 
    -classpath 指的是类文件的位置就是.java的位置
    你是不是写错了?
      

  4.   

    比如要编译当前目录下的test.java,而该类中用到了在某folder下的类则
    java -classpath folder test.java
    这里的folder是文件夹路径(相对/绝对都可以)
      

  5.   

    大家可能没有看懂我的问题.
    如果照大家所言:classpath 的路径指的是*.java文件所在的路径,那么.我在CLASSPATH环境变量中设置的文件夹(我在里面放的是*.class),就不能用java *直接运行了.
      

  6.   

    可以直接运行啊,只有是CLASSPATH设置的路径!
      

  7.   

    javac命令中的-classpath指的是为编译你的*.java文件所需要的类路径
    注意:
    这类是指已经编译好了的.class文件,而不是.java文件!!!
    -sourcepath这个参数用的不多(基本就没用过!!)
      

  8.   

    但是如果有一个testprogram.java用到一个包比如是Geometry包.
    那么我直接编译testprogram.java而不用编译包也行呀.不用预先编译包呀.
    何谈已经编译好的.class文件呢?
    还有,有没有办法给*.java设置一个路径,让javac 在任何地方访问到他.
    我现在只能做到让java命令在任何地方访问到*.class文件(即在
      

  9.   

    我大概清楚了.
    我已经实现了java命令在任何地方,直接访问某一个文件夹下的 *.class文件.
    (即在CLASSPATH中把放置*.class文件的文件夹包括进去)
    但是如何让javac 命令在任何地方,直接访问某一个文件夹下的 *.java文件.
      

  10.   

    但是如何让javac 命令在任何地方,直接访问某一个文件夹下的 *.java文件.
      

  11.   

    不是这个意,我说的不对,就是让javac访问"不是当前目录中的任何*.java"文件.
    呵呵.
      

  12.   

    classpath是放*.java文件的地方,用javac编译时会到你指定的classpath下去找要编译的java文件!同时你编译好的*.class文件也会默认放到这个目录!
      

  13.   

    用java命令运行时,也是要找classpath中指定目录下的.class文件,你把.class移走他会报错的!
    其实设置classpath就是为了让你无论在什么地方只要敲入java/javac就能运行,不必每次都输入文件所在的路径!
    你想做到访问任何目录中的任何*.java,我还不会,如果可能你要是知道解决的通知我一声*^_^*
      

  14.   

    楼上所说不对吧,我觉得-classpath指的是为编译你的*.java文件所需要的类路径
    注意:
    这类是指已经编译好了的.class文件,而不是.java文件
      

  15.   

    现在想了想,刚才的回答也不妥.
    在用javac编译一个包时,-classpath指的是*.java所在的路径.
    但在用java时好像指的是-classpath指的是.class文件所在的路径.
    所以现在越来越糊涂了.
    zpwly第二次好象和我相同了.
      

  16.   

    結論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 檔之後.