Java - проблема java.library.path в Linux - PullRequest
1 голос
/ 21 июня 2011

Я могу запустить Java-программу с некоторыми зависимостями от строки cmd на моем Mac, но когда я пытаюсь запустить ее на Linux SUSE 11, у меня она возвращается:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no myNativeLib in java.library.path

Это строка cmd, которую я использую:

java -Djava.library.path=../lib -cp ../jar/a-jar.jar:. MyMainClass

Любая помощь приветствуется!

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Я бы рекомендовал использовать абсолютный путь для java.library.path.По крайней мере, вы устраняете возможные проблемы с относительным разрешением пути.

Кроме того, просто для подтверждения, у вас есть библиотека Linux в lib, верно?Mac один не будет работать.

0 голосов
/ 21 июня 2011

Я собираюсь выйти из строя и предположить (рискуя кучей отрицательных голосов), что вы пытаетесь использовать собственный драйвер базы данных oracle.

Если это действительно драйвер базы данных, который вы используете, вы можете сделать ставку на нативную версию и просто включить тонкий клиент .jar в ваш путь к классу, используя расширение -cp. Это может потребовать некоторых изменений кода, например, чтобы вы не пытались вызвать собственный драйвер.

Если вы одержимы использованием родного драйвера или вам это нужно, потому что код полагается на него. вам нужно убедиться, что для переменной java.library.path задан каталог, содержащий файлы двоичного драйвера (обычно обозначается расширением .so).

Также убедитесь, что эти файлы драйверов (поскольку они являются собственными двоичными файлами) скомпилированы для вашего дистрибутива linux, а не просто скопированы из установки для Mac.

Если вы не делаете ничего из этого, не стесняйтесь игнорировать все, что я сказал.

...