CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

问一个最基本的问题,再线等待!!!

楼主qeveeqnui()2003-11-04 19:50:07 在 Java / J2SE / 基础类 提问

在编译一个包时,如果"包目录"不在当前目录,要指明-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

相关问题

  • java网络编程的基本问题,求救(在线等待)
  • 数字签名的基本问题,在线等待
  • Javascript数组基本操作问题,谢谢帮忙!在线等待中……
  • 基本问题,在线等待:如何实现整数与浮点数的混合除法运算?
  • 求救,在线等待:关于CListBox的基本使用
  • 关于指针的基本概念(在线等待)
  • 小问题?在线等待!!!
  • 在线等待---sql问题
  • Session问题(在线等待)
  • PlaySound问题?在线等待!

关键词

  • 文件
  • 编译
  • classpath
  • 文件夹
  • 類別
  • 結論
  • 選項
  • javac
  • 路径
  • 編譯

得分解答快速导航

  • 帖主:qeveeqnui

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo