развернуть приложение Java с Apache Derby в качестве СУБД? - PullRequest
2 голосов
/ 21 января 2012

Я разработал приложение Java, которое соединяется с базой данных (вставьте, выберите ...) с Apache Derby в качестве СУБД, это приложение нормально работает на NetBeans, но когда я экспортирую его в Jar и запускаю его снаружи без NetBeans я получаю эту ошибку:

после выполнения этой команды:

 java -jar jarre.jar

Я получаю этот список:

http://i.stack.imgur.com/7xka9.jpg

Я хочу, чтобы мое приложение было переносимым без запуска NetBeans.
Я знаю, что что-то упускаю, но что именно, я хочу, чтобы кто-то осветил?

Ответы [ 2 ]

3 голосов
/ 21 января 2012

Если вы посмотрите на последнее напечатанное исключение (java.net.SocketException) и его трассировку стека, то похоже, что Security Manager вашей JVM не позволяет создать сокет.

Попробуйте установить соответствующее SocketPermission для вашего приложения.

2 голосов
/ 21 января 2012

Derby - это продукт бывшего IBM, и они немного фанатичны в отношении безопасности (которая может быть хорошей или плохой). В вашем случае база данных Derby использует API-интерфейс Security Manager для обеспечения безопасности многих вещей. См. Документацию о том, как правильно настроить менеджер безопасности на сервере Derby .

Второй вариант - отключить защиту; не устанавливайте SecurityManager в свой клиент .

Однажды я потратил примерно неделю, чтобы все настроить правильно. Это кажется странным, потому что Derby предоставляет примеры файлов безопасности. Проблема в том, что после установки SM он распространяется на все

Таким образом, вам может потребоваться изменить код в не-Derby частях, написать более обширные файлы политик для этих частей кода и сделать много уродливых вещей, которые едва документированы. Мне это не понравилось По большей части, это было похоже на нож в темноте.

Отключение защиты часто является предпочтительным вариантом, если ваш код не был написан с точки зрения безопасности с нуля (и всех используемых вами фреймворков).

...