Вопрос

Я создаю Java-приложение, которое использует JDBC для подключения к MySQL.У меня есть сценарий ant, который компилирует мой код, а затем упаковывает его вместе с log4j, junit, libshout-java и драйвером jdbc mysql в один исполняемый файл jar.Все это отлично работает в Ubuntu 9.10, мой код подключается к MySQL, и поехали.

Однако моя производственная среда будет 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 — en_US в Solaris, но моя база данных mysql в Ubuntu — также en_US.

У кого-нибудь есть идеи?

Я не уверен, какая еще информация необходима, поэтому, если вам нужна дополнительная информация, просто дайте мне знать в комментариях.

Баночки, которые упаковываются

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

munderwo@opensolaris:~/ShoutGen-Java$ uname -a
SunOS opensolaris 5.11 snv_111b i86pc i386 i86pc Solaris

Версия MySQL:MySQL 5.1.30

Ваше здоровье

Отметка

Это было полезно?

Решение 2

Думаю, причина этого удивления-неожиданность в ошибке пользователя :)

Я удалил все файлы mysql jdbc из каталога lib в исходном коде, а затем поместил соединитель jdbc mysql, поставляемый с opensolaris (похоже, он был взят из студии Sun) в lib/ext Java.Как только я это сделал, все, казалось, сработало.При ближайшем рассмотрении я думаю, что у меня все еще был драйвер JDBC ubuntu mysql в моем пути к классам и, вполне возможно, до кроссплатформенного jar.Так что я подозреваю, что проблема в этом.

Спасибо за вашу помощь!

Отметка.

Другие советы

Ошибка говорит:

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

Кажется, в настоящее время вы используете австралийскую локаль.

Я думаю, вам следует сначала попробовать переключить локаль на en_US и проверить, работает ли это.

[EDIT] Также убедитесь, что путь, по которому хранится ваш соединитель/драйвер mysql, не содержит недопустимых символов.Видеть это связь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top