Discussion:
[問題] CLASSPATH設了沒用...
(时间太久无法回复)
ㄍㄠˊ
2007-06-23 07:46:51 UTC
Permalink
我是新手,有看了書爬了文
我把 CLASSPATH 設成

;C:\;C:\j2sdk1.4.2_14;C:\j2sdk1.4.2_14\lib;C:\j2sdk1.4.2_14\bin

可是還是沒用,只要在不是檔案所在的資料夾做javac
(我把檔案放在C:\j2sdk1.4.2_14)
就會出現

error: cannot read: xxxxx.java
1 error

請問要怎麼解決呢
謝謝

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.223.131
ㄍㄠˊ
2007-06-23 09:17:55 UTC
Permalink
※ 引述《***@bbs.sayya.org (foolish)》之銘言:
: ※ 引述《***@ptt.cc (ㄍㄠˊ)》之銘言:
: > 我是新手,有看了書爬了文
: > 我把 CLASSPATH 設成
: > ;C:\;C:\j2sdk1.4.2_14;C:\j2sdk1.4.2_14\lib;C:\j2sdk1.4.2_14\bin
: > 可是還是沒用,只要在不是檔案所在的資料夾做javac
: > (我把檔案放在C:\j2sdk1.4.2_14)
: > 就會出現
: > error: cannot read: xxxxx.java
: > 1 error
: > 請問要怎麼解決呢
: > 謝謝
: classpath 之所以叫 classpath 是因為 path 中含有 class
: ;C:\;C:\j2sdk1.4.2_14;C:\j2sdk1.4.2_14\lib;C:\j2sdk1.4.2_14\bin
: 你的第一個分號前少了一個「.」
: . 這個 path 是目前工作路徑
: 讓你可以在目前的路徑找到 class
: 請依序檢查你設的 path 是不是包含了你要用到的 class
: 另外, 除了 class 你也可以對 .jar 設定 classpath
: 只要給完成的徑路與檔名就可以了
: ex.
: c:\mylib.jar

你好,我的原文前面有 .
只是好像你回覆的時候不見了^^"
我設的路徑其中一個是 C:\j2sdk1.4.2_14
而我寫出來的 xxxx.java也是放在這裡面
(我也放到其他地方試過了,但只要跟命令提示字元執行的路徑不一樣就不行)



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.223.131
ㄍㄠˊ
2007-06-23 11:54:32 UTC
Permalink
※ 引述《***@bbs.sayya.org (foolish)》之銘言:
: ※ 引述《***@ptt.cc (ㄍㄠˊ)》之銘言:
: > 你好,我的原文前面有 .
: > 只是好像你回覆的時候不見了^^"
: > 我設的路徑其中一個是 C:\j2sdk1.4.2_14
: > 而我寫出來的 xxxx.java也是放在這裡面
: > (我也放到其他地方試過了,但只要跟命令提示字元執行的路徑不一樣就不行)
: error: cannot read: xxxxx.java
: 1 error
: 回頭看了 error message 是你打錯檔名了
: 或是在該路徑下找不到
: 不是 classpath 的問題
那是我舉例的名字啦orz
沒有打錯檔名,謝謝^^"

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.223.131
^%$#%#
2007-06-24 12:26:18 UTC
Permalink
※ 引述《ericabab (ㄍㄠˊ)》之銘言:
: 我是新手,有看了書爬了文
: 我把 CLASSPATH 設成
: .;C:\;C:\j2sdk1.4.2_14;C:\j2sdk1.4.2_14\lib;C:\j2sdk1.4.2_14\bin
: 可是還是沒用,只要在不是檔案所在的資料夾做javac
: (我把檔案放在C:\j2sdk1.4.2_14)
: 就會出現
: error: cannot read: xxxxx.java
: 1 error
: 請問要怎麼解決呢
: 謝謝


CLASSPATH只要設一個.字就OK了
path路徑設javac的所在地
每次這樣設 沒有不能用的

如果還是不清楚 請上JavaWorld論壇
搜尋CLASSPATH或是PATH
有影片檔專門介紹

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.244.145
ㄍㄠˊ
2007-06-24 13:39:59 UTC
Permalink
※ 引述《intelceo (^%$#%#)》之銘言:
: ※ 引述《ericabab (ㄍㄠˊ)》之銘言:
: : 我是新手,有看了書爬了文
: : 我把 CLASSPATH 設成
: : .;C:\;C:\j2sdk1.4.2_14;C:\j2sdk1.4.2_14\lib;C:\j2sdk1.4.2_14\bin
: : 可是還是沒用,只要在不是檔案所在的資料夾做javac
: : (我把檔案放在C:\j2sdk1.4.2_14)
: : 就會出現
: : error: cannot read: xxxxx.java
: : 1 error
: : 請問要怎麼解決呢
: : 謝謝
: CLASSPATH只要設一個.字就OK了
: path路徑設javac的所在地
: 每次這樣設 沒有不能用的
: 如果還是不清楚 請上JavaWorld論壇
: 搜尋CLASSPATH或是PATH
: 有影片檔專門介紹
你好
設比較多個應該不會反而不能用吧@@
不過我也照您說的把CLASSPATH只輸入. 但還是不行
path也有設javac的所在地了

忽然想到一個問題
xxxx.java 檔,是有規定要放哪嗎? 但我已經有把放的地方都寫入CLASSPATH了
可是還是都不行,一定要把xxxx.java檔放在跟命令提示字元一樣的路徑

至於上篇某位大大講的打完整的路徑名稱
我知道這樣可行,但我現在一開始在學
如果每次都要這樣做的話會挺麻煩的,謝謝


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.223.131
紅虫
2007-06-24 14:05:44 UTC
Permalink
你的問題, 好像跟classpath無關,

印象中classpath是用來存取某個目錄下的.class 或jar裡的.class

如果沒有特別要存取某處的class, 其實沒有設classpath也沒關係...

若無設定classpath, jre預設找(.)目前目錄是否存在target class.

若有設定classpath, jre只找classpath設定的路徑是否存在target class.

所以把你的classpath刪除看看, 若還是不行,

請po你的path出來看看..

※ 引述《ericabab (ㄍㄠˊ)》之銘言:
: 你好
: 設比較多個應該不會反而不能用吧@@
: 不過我也照您說的把CLASSPATH只輸入. 但還是不行
: path也有設javac的所在地了
: 忽然想到一個問題
: xxxx.java 檔,是有規定要放哪嗎? 但我已經有把放的地方都寫入CLASSPATH了
: 可是還是都不行,一定要把xxxx.java檔放在跟命令提示字元一樣的路徑
: 至於上篇某位大大講的打完整的路徑名稱
: 我知道這樣可行,但我現在一開始在學
: 如果每次都要這樣做的話會挺麻煩的,謝謝

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.201.20
ha(ruhi|yate)ism
2007-06-24 14:31:17 UTC
Permalink
※ 引述《l314 (紅虫)》之銘言:
: 你的問題, 好像跟classpath無關,
: 印象中classpath是用來存取某個目錄下的.class 或jar裡的.class
: 如果沒有特別要存取某處的class, 其實沒有設classpath也沒關係...
: 若無設定classpath, jre預設找(.)目前目錄是否存在target class.
: 若有設定classpath, jre只找classpath設定的路徑是否存在target class.
: 所以把你的classpath刪除看看, 若還是不行,
: 請po你的path出來看看..
: ※ 引述《ericabab (ㄍㄠˊ)》之銘言:
: : 你好
: : 設比較多個應該不會反而不能用吧@@
: : 不過我也照您說的把CLASSPATH只輸入. 但還是不行
: : path也有設javac的所在地了
: : 忽然想到一個問題
: : xxxx.java 檔,是有規定要放哪嗎? 但我已經有把放的地方都寫入CLASSPATH了
: : 可是還是都不行,一定要把xxxx.java檔放在跟命令提示字元一樣的路徑
: : 至於上篇某位大大講的打完整的路徑名稱
: : 我知道這樣可行,但我現在一開始在學
: : 如果每次都要這樣做的話會挺麻煩的,謝謝
個人覺得也和classpath無關...

拿C來打個比方就是你把某份作業的C程式碼收在作業的資料夾

但卻想在根目錄去compile它

這當然compiler怎麼找都找不到它嘍~

所以看你是要統一收在哪裡 收過去之後 "cd到那個目錄下" 再下javac

--
[LPH] Oops, your OOP's a problem? 說:
你現在還是看不到狗?
************* 說:
看得到 只是 他們不會跑 就一直呆呆在那邊 一直在起點
[LPH] Oops, your OOP's a problem? 說:
你要按"ㄅㄧㄤˋ"它們才會跑啊@@"

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.197.116
ㄍㄠˊ
2007-06-24 14:35:05 UTC
Permalink
喔喔所以是說 CLASSPATH 跟
用javac要編譯 xxxx.java檔根本沒關係的意思囉
原來是我誤會了...

謝謝所有幫我回答的大大

※ 引述《LPH66 (ha(ruhi|yate)ism)》之銘言:
: ※ 引述《l314 (紅虫)》之銘言:
: : 你的問題, 好像跟classpath無關,
: : 印象中classpath是用來存取某個目錄下的.class 或jar裡的.class
: : 如果沒有特別要存取某處的class, 其實沒有設classpath也沒關係...
: : 若無設定classpath, jre預設找(.)目前目錄是否存在target class.
: : 若有設定classpath, jre只找classpath設定的路徑是否存在target class.
: : 所以把你的classpath刪除看看, 若還是不行,
: : 請po你的path出來看看..
: 個人覺得也和classpath無關...
: 拿C來打個比方就是你把某份作業的C程式碼收在作業的資料夾
: 但卻想在根目錄去compile它
: 這當然compiler怎麼找都找不到它嘍~
: 所以看你是要統一收在哪裡 收過去之後 "cd到那個目錄下" 再下javac

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.223.131
紅虫
2007-06-24 14:40:13 UTC
Permalink
小弟前陣子也對path, classpath, jre, jdk有些搞不太清楚..

所以看了一些文件, 歸納後做了一點小筆記..

有興趣可以看一下..

有錯誤請提出, 謝謝..

http://tinyurl.com/39qnyc


※ 引述《ericabab (ㄍㄠˊ)》之銘言:
: 喔喔所以是說 CLASSPATH 跟
: 用javac要編譯 xxxx.java檔根本沒關係的意思囉
: 原來是我誤會了...
: 謝謝所有幫我回答的大大

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.201.20
骨頭
2007-06-24 16:06:43 UTC
Permalink
※ 引述《ericabab (ㄍㄠˊ)》之銘言:
: 喔喔所以是說 CLASSPATH 跟
: 用javac要編譯 xxxx.java檔根本沒關係的意思囉
: 原來是我誤會了...
: 謝謝所有幫我回答的大大

基本上不是沒有關係啦,
不過你的問題應該不是classpath的問題.
────────────────────────────────

一般來說新手要設定好的環境變數就是 Path classpath
(JAVA_HOME有些時候也會用到,最好也設定一下.)

設定Path是可以讓你在任何路徑下,
都能夠使用javac javadoc javaw等指令。


像你說在 JDK路徑以外打javac就無法使用,

如果錯誤訊息是
'javac' 不是內部或外部命令、
可執行的程式或批次檔。 (or bad command .... in dos)

很有可能就是Path沒設定好的關係。



那classpath用途是幹麻的?

因為我們一般來講專案或者資料都不只一個.java檔,
都是幾十個class湊在一起用的,這時候很有可能會再寫A class時
使用到B class的資料。


一般來講我們至少會認為,我A class使用B class的物件,
 要編譯的時候只要把B class放在 A class所在的資料夾下就可以了吧?

答案是:錯!


這是在 classpath有設定包含 "." (當前目錄) 的前提下才成立。

這真的是萬年月經題了,我看到沒有上百次也有幾十次
NoClassDefFoundError是這樣來的,

而且都會認為之前都可以操作,突然間就不行。
(通常不是之前是在已經設定好的環境下使用,是用預設 classpath為.的IDE.)



而且老是把被引用的B class搬來搬去也很麻煩吧?

所以我們就會把一些常用的套件放在 JDK的 lib資料夾下,
設定classpath的路徑到lib資料夾,
萬一我們有需要引用到那些class就很方便了.


另外除了環境變數以外,我們一般也可以透過 -cp 參數
手動在執行的時候設定classpath.

--
 ▄▅▆▇███▇▆▅▄▃        ╰┼╯─╮ ╮       
 ◥███████████◣       ╰┼╯=│=│         
◥██████───────◣    *. ╯  ╯ ╯  物 語 .*
 ◥███████──────◣ ~ ◢◣             ◢◣
 ◥██████───────◤   ◥◤*  空白的世界.翼 *◥◤
  ◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂~telnet://tony1223.no-ip.info

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.27.68
※ 編輯: TonyQ 來自: 220.134.27.68 (06/25 00:03)
※ 編輯: TonyQ 來自: 220.134.27.68 (06/25 00:06)
继续阅读narkive:
Loading...