2011-02-11 32 views
2

那麼我有2個.jar文件。主jar文件是我整個項目的jar文件,另一個.jar文件是MySql JDBC Connector。我需要一些關於在Java中使用2個jar文件的幫助

基本上,現在發生的事情是,當我構建項目時,我有一個主要的.jar文件,但是當它在NetBeans中生成時,MySql JDBC Connector .jar文件位於主jar文件內。

現在,當我剛從NetBeans內部運行項目時,可以在我擁有的src/com/game/mysql文件夾中找到MySql JDBC驅動程序。但是,當我構建項目時,Java應用程序無法找到主jar文件中的JDBC驅動程序。

當我用WinRar打開主jar文件時,我可以看到JDBC jar文件仍在/ com/game/mysql /文件夾中。但爲什麼Java應用程序無法訪問它?

我聽說Java中不支持嵌套的.jar文件,所以我認爲這可能是原因,雖然林不知道如果這是真的。有沒有一種方法可以讓應用程序在主jar文件中找到JDBC .jar文件?

另外,我在NetBeans中通過右鍵單擊項目 - >屬性 - >庫 - >添加文件夾/ Jar來添加.jar文件。那是什麼使它在NetBeans運行中工作,但仍然不是應用程序構建。

回答

0

我聽說嵌套.jar文件不是存在於Java

更精確,支持的類的JAR文件,該文件被打包爲一個孩子JAR主JAR裏面確實是默認主JAR中的類不可見。

你已經基本上2種選擇:

  1. 船舶的2名寬鬆的JAR應用程序:your.jarmysql.jar並定義在MANIFEST.MF文件your.jarClass-Path進入到mysql.jar的相對路徑。

    Class-Path: mysql.jar 
    

    當你把兩個JAR文件相同的文件夾,並通過java -jar your.jar執行your.jar,那麼它會工作。

  2. 讓你的IDE重新包裝mysql.jar裏面的所有鬆散類your.jar,或者添加一個特殊的類加載器來預加載任何嵌入式JAR的類。由於我不做Netbeans,我不知道它是否支持它,如果是的話,怎麼做。然而,在Eclipse中,這絕對是可能的。另見this answer