2010-11-11 50 views
0

我在我的Linux機器上安裝了Mysql並編寫了一個示例程序來訪問它的一個表。 我正在使用'mysql-connector-java-5.1.10.jar'在Linux上訪問Mysql時出現CLASSPATH問題

如果我把jar放在'jre/lib/ext'中,代碼工作正常。但是,識別該jar的其他方法不起作用。我試着設置$ CLASSPATH並嘗試使用'。'。當前目錄。

它與下面的錯誤而失敗:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306 
     at java.sql.DriverManager.getConnection(DriverManager.java:602) 
     at java.sql.DriverManager.getConnection(DriverManager.java:185) 
+0

'但是,識別該jar的其他方法不起作用。我試着設置$ CLASSPATH並嘗試使用'。'。當前目錄.'請詳細說明這個 – 2010-11-11 07:20:39

+0

一種方法是設置CLASSPATH的權利?我剛開始知道,當我在linux中設置CLASSPATH時,我必須在CLASSPATH中放置.class文件的路徑。 Windows中並非如此。 Windows可以識別當前目錄中的.class文件以及CLASSPATH。第二種方法是在不設置CLASSPATH的情況下使用當前目錄。但是,根據下面的答案,它也不起作用。我必須使用-cp – ernesto 2010-11-11 07:36:03

回答

0

我通常不使用全局$CLASSPATH變量,讓它運行的最簡單的方法是

java -cp .;/path/to/mysql-connector-java-5.1.10.jar[;<other libs>] pkg.name.MyApplication 

旁註

如果您將應用程序導出到具有Main-Class屬性的jar(「可執行jar」 )並以java -jar myjar.jar開頭,那麼你必須要將所有需要的庫添加到罐子清單中,$CLASSPATH-cp在這種情況下被忽略。這就是爲什麼我通常不使用-jar選項...

編輯

要回答你的另一個問題:如果當前目錄被默認從那裏添加到類路徑,那麼位置應用程序開始可能會影響應用程序本身。

想象一下,一個罐子內的應用程序和啓動命令

java -cp application.jar com.example.Main 

現在我們有一個定義的環境:只有application.jar的內容(和JRE類)都在應用程序的classpath和部分。如果當前目錄自動添加到類路徑中,則當前位置(以及所有子文件夾的位置)上的所有文件都將位於類路徑中,不管是否打算。結果,如果從用戶主目錄啓動應用程序,但如果從根目錄啓動(/),則應用程序可能不會啓動。

+0

cool明確提及它們。得到它了!也有一些問題....爲什麼我們應該明確地設置爲查看當前目錄(包括.class文件和jar)。 – ernesto 2010-11-11 07:30:57

+0

http://download.oracle.com/javase/tutorial/essential/environment/paths.html – ernesto 2010-11-11 07:31:52

+0

爲什麼它無法將當前目錄識別爲每個文檔的默認位置。 – ernesto 2010-11-11 07:46:44