2010-11-18 116 views
1

我有一個問題關於運行jython相關的兩個命令的差異。我遇到了類路徑和db驅動程序的問題。Jython問題與類路徑

我什麼工作是做如下: Jython的-J-classpath中../lib/mysql-connector-java-5.1.7.jar test.py /家/測試/數據

運行的是命令一切按預期運行,所以我想結合我的腳本作爲jar來運行,所以不需要jython。一旦我開始創建我的jar,一切都會運行,直到我需要驅動程序並返回驅動程序未找到的錯誤。

我運行此如下所示: java命令../lib/mysql-connector-java-5.1.7.jar mytest.jar test.py /家/測試/數據

我不知道我明白爲什麼一個人會工作,而另一個人不工作?

謝謝

回答

0

我得到它的工作,但我不知道它爲什麼工作。我希望有人能向我解釋。我重建了我的mytest.jar jar並在構建jar時在mainifest中包含了所需的classpath,這似乎允許我在java中使用: java -cp mytest.jar test.py/home/test/data

爲什麼在mainfest而不是在命令行中包含類路徑會產生不同的結果?

+0

當您通過Ant,beanshell,Jython或其他任何方式運行java程序時,在某些情況下,類會在自定義類加載器中加載,而不是「默認類加載器」。例如,啓動一個beanshell腳本,然後在該腳本中動態加載jar導致.jar被加載到一個自定義類加載器中,並且需要使用Class.forname方法加載的類(如JDBC驅動程序)將因此在環境中遇到麻煩。只要你將東西加載到默認的類加載器中,你就不會有問題。 – djangofan 2012-01-12 21:19:12