Я использую файл банки Jacob в своем JAVA-приложении.
Этот файл банки Jacob идет с .dll файлом. Я добавил файл банки Jacob к своему пути к классу. Но когда я выполняю свое приложение, ошибка периода выполнения происходит как
"couldn't load jacob-1.15-M3-x86.dll file"
Как я могу загрузить этот .dll файл?
Отредактированный: =================================================================================
Я установил переменную среды "пути" на dir, который содержит мой .dll файл и загрузку это .dll файл следующим образом
static {
System.loadLibrary("jacob-1.15-M3-x86.dll");
}
но следующая ошибка произошла
java.lang.UnsatisfiedLinkError: no jacob-1.15-M3-x86.dll in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at TemplateClass.TemplateClass.(TemplateClass.java:14)
Сравните файлы до и после передачи, чтобы определить, где проблема.
Для этого можно использовать hexdiff
.
Это не будет иметь большого значения, поскольку ваша проблема связана с подстановочным знаком, но использование «SELECT *» не улучшит производительность запроса. Если вы на самом деле не используете все поля, которые вы получаете назад, это выигрыш и «SELECT *» вызывает два запроса, один для поиска полей для таблицы, а затем ваш запрос с именами полей, добавленными в.
-121--2384571-'Jacob-1.15-M3-x86.dll' должен быть в месте, где ваша операционная система может найти его. Здесь имеется несколько вариантов:
Файл .dll можно поместить в каталог, из которого было запущено приложение. Если у вас есть пакетный сценарий для запуска приложения, это будет тот каталог. При запуске на каком-либо сервере приложений обычно используется каталог bin.
Файл .dll можно поместить в переменную среды% PATH%. Мне может быть проще просто обновить переменную среды PATH, включив в нее каталог, содержащий файл .dll.
Другой вариант - поместить файл .dll в каталог% SystemRoot %\system32. Обычно это «C :\Windows\system32». Этот параметр обычно не рекомендуется, если он не является общей библиотекой, такой как среда выполнения MSCVRT.
Еще одна возможная проблема. Если файл .dll скомпилирован как 32-разрядный, то он должен выполняться в 32-разрядной среде выполнения Java. Аналогично, если это 64-разрядный файл .dll, его необходимо запустить в 64-разрядном JRE.
Это не ошибка компиляции, а ошибка выполнения.
Я думаю, что ваша DLL должна быть на PATH
. Не CLASSPATH
, а PATH
, потому что именно здесь Windows ищет DLL. Попробуйте либо расширить PATH, чтобы включить местоположение DLL, либо сделать то, что делают многие другие люди: Выполните сброс DLL в \Winnt\System\System32
, или как там называется системный каталог на вашем ящике. Где бы ни находились все остальные DLL, другими словами.
Обновление
Сообщение об ошибке, которое вы, к счастью, разместили, указывает на то, в чем именно заключается проблема. Вы можете решить ее, поместив каталог, содержащий ваши DLL, в java.library.path
Эта ветка форума Sun показывает хороший пример: http://forums.sun.com/thread.jspa?threadID=627890
На самом деле, это гораздо менее чистая, чем должна быть; похоже, это одна из "шейдерских" областей на Java. Тема много бродит, советую прочитать все, чтобы увидеть некоторые проблемы и их решения. Я думаю, что вы сможете преуспеть с небольшим количеством проб и ошибок.
Это не будет иметь большого значения, поскольку ваша проблема связана с подстановочным знаком, но использование «SELECT *» не повысит производительность запросов. Если вы на самом деле не используете все поля, которые вы получаете назад, это выигрыш и «SELECT *» вызывает два запроса, один для поиска полей для таблицы, а затем ваш запрос с именами полей, добавленными в.
-121--2384571-Профилированный код должен выполняться медленнее, как упоминалось в большинстве предыдущих комментариев. Я бы сказал, используйте профилирование, чтобы измерить только относительную производительность различных частей вашего кода (скажем, методы). Не используйте измерения из профилировщика в качестве индикатора того, как код будет работать в целом (если не требуется наихудший показатель, в этом случае то, что было бы завышенным значением).
-121--3909906-Необходимо установить LD_LIBRARY_PATH. Это даст вам все необходимые шаги.
Другие варианты: