2010-01-10 78 views
0

構建一個使用JDBC連接到MySQL的java應用程序。我有一個編譯我的代碼的ant腳本,然後將它與log4j,junit,libshout-java和mysql jdbc驅動程序一起打包到一個可執行的jar文件中。這一切都適用於Ubuntu 9.10,我的代碼連接到MySQL,我們走了。在solaris上構建一個包含MySQL jdbc的jar

但是,我的生產環境是solaris(我的開發盒是Ubuntu的),當我開始構建並運行這個時,我有以下錯誤。

17 [main] DEBUG com.radiobusi.ShoutGen.ParseConfig - [SQL, SELECT * FROM RadioBusi.RadioBusi_song JOIN RadioBusi.RadioBusi_playlist WHERE RadioBusi_playlist.Name = 'Placebo 2';] 
18 [main] DEBUG com.radiobusi.ShoutGen.ParseConfig - this is able to be broken up[SQL, SELECT * FROM RadioBusi.RadioBusi_song JOIN RadioBusi.RadioBusi_playlist WHERE RadioBusi_playlist.Name = 'Placebo 2';] 
78 [main] ERROR com.radiobusi.ShoutGen - An error occured instantiating the class ShoutGen 
java.lang.ExceptionInInitializerError 
     at com.mysql.jdbc.Util.stackTraceToString(Util.java:351) 
     at com.mysql.jdbc.Util.<clinit>(Util.java:116) 
     at com.mysql.jdbc.NonRegisteringDriver.parseURL(NonRegisteringDriver.java:672) 
     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:277) 
     at java.sql.DriverManager.getConnection(DriverManager.java:582) 
     at java.sql.DriverManager.getConnection(DriverManager.java:185) 
     at com.radiobusi.ShoutGen.PlayList.<init>(Unknown Source) 
     at com.radiobusi.ShoutGen.ShoutGen.<init>(Unknown Source) 
     at com.radiobusi.ShoutGen.ShoutGen.main(Unknown Source) 
Caused by: java.lang.RuntimeException: Can't load resource bundle due to underlying exception java.util.MissingResourceException: Can't find bundle for base name com.mysql.jdbc.LocalizedErrorMessages, locale en_AU 
     at com.mysql.jdbc.Messages.<clinit>(Messages.java:60) 
     ... 9 more 
Caused by: java.util.MissingResourceException: Can't find bundle for base name com.mysql.jdbc.LocalizedErrorMessages, locale en_AU 
     at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1521) 
     at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260) 
     at java.util.ResourceBundle.getBundle(ResourceBundle.java:715) 
     at com.mysql.jdbc.Messages.<clinit>(Messages.java:58) 
     ... 9 more 
Exception in thread "main" java.lang.NullPointerException 
     at com.radiobusi.ShoutGen.ShoutGen.main(Unknown Source) 

我的mysql數據庫語言環境是solaris上的en_US,但是我的ubuntu mysql數據庫也是en_US。

有人有什麼想法嗎?

我不確定需要什麼其他信息,所以如果您想了解更多信息,請在評論中告訴我。

罐是那些獲得打包

junit-4.8.1.jar 
libshout.jar 
log4j-1.2.15.jar 
mysql-5.1.6.jar 

[email protected]:~/ShoutGen-Java$ uname -a 
SunOS opensolaris 5.11 snv_111b i86pc i386 i86pc Solaris 

的MySQL版本:MySQL的5.1.30

乾杯

馬克

回答

0

我覺得這個驚喜,驚喜,用戶錯誤:)

的原因我刪除從我的lib目錄中的任何MySQL的JDBC在我的源代碼,然後把與OpenSolaris的附帶的MySQL的JDBC連接器(貌似來自sun studio)在java的lib/ext中。一旦我這樣做,這一切似乎工作。在仔細觀察之後,我想我的班級路徑中可能還有ubuntu mysql JDBC驅動程序,並且很可能在跨平臺的jar之前。所以我懷疑這是問題所在。

感謝您的幫助!

Mark。

0

錯誤說:

Can't find bundle for base name com.mysql.jdbc..., locale en_AU 

所以似乎目前您正在澳大利亞語區域運行

我認爲您應該先嚐試將區域設置切換到en_US並嘗試是否有效。

[編輯]另外,請確保您的MySQL連接器/驅動程序存儲的路徑不包含任何非法字符。看到這個link

+0

好吧,它在我的ubuntu盒子上運行,並且語言環境設置爲en_AU。但我試了一下,有趣的是得到了相同的消息,但對於en_US語言環境。思考? – 2010-01-10 09:28:42

+0

還檢查mysql連接器存儲的路徑是否包含任何非法字符。在這種情況下,非法角色也可能是罪魁禍首。我已經更新了答案以反映它。 – 2010-01-10 10:01:35

+0

jar的路徑是/ export/home/munderwo/ShoutGen-Java/lib 所以我看不到任何非法字符。感謝您的鏈接和幫助。 – 2010-01-10 10:31:11