2014-12-02 85 views
0

通過運行shell腳本的Java類:noclassdeffound錯誤在Java,Linux的

java -cp $CLASSPATH CG_GpsRequest "dbname","oracle.jdbc.driver.OracleDriver","abc","abc" 

運行在UNIX腳本時,得到錯誤,

Exception in thread "main" java.lang.NoClassDefFoundError: CG_GpsRequest 
Caused by: java.lang.ClassNotFoundException: 

CG_GpsRequest是類文件的名稱。

+0

你能分享什麼$ CLASSPATH擴展到? – 2014-12-02 04:46:08

+0

$ CLASSPATH =/JAVA/JRE/lib目錄 – 100003358693870 2014-12-02 05:27:33

回答

0

添加在你的java類存在到CLASSPATH

+0

CLASSPATH = $ CLASSPATH:/腳本/ class_files 這樣做後,仍然我得到同樣的錯誤 – 100003358693870 2014-12-02 05:35:38

1

好吧..如果我理解正確的文件夾/路徑..

我認爲它與包名稱規範的問題..

你CALSS CG_GpsRequest必須在包裝的方式指定例如

com.xxx.yyy.CG_GpsRequest 

所以我覺得JVM在這個模式中搜索你的課com.xxx.yyy.CG_GpsRequest,所以請運行你的腳本進行以下修改。

java -cp $CLASSPATH com.xxx.yyy.CG_GpsRequest "dbname","oracle.jdbc.driver.OracleDriver","abc","abc" 

這只是假設你已經在Pacakgin hirarechy中創建了你的班級,因爲你沒有指定更多的信息。

+0

你的假設是關於包層次是正確的,但我已經maintaned適當的層次結構,其我在java文件中提到過。所以,肯定不會發生錯誤 – 100003358693870 2014-12-02 06:48:33

+0

可能是你沒有得到我的意思是,當你運行你的java類時,你應該指定你的類與包hirarechy一樣,我已經在我的答案中解釋.. – Babel 2014-12-02 06:50:52

+0

是的,現在我明白了你的觀點。這是有幫助的...現在我能夠運行該類文件。謝謝... – 100003358693870 2014-12-03 13:58:30