当前位置: 首页 > 知识库问答 >
问题:

使用Fat Jar的可执行Jar在本地工作区位置而不是Jar根位置查找dll

戚森
2023-03-14

我是Java和eclipse的新手。我的项目使用依赖于本地dlls的第三方罐。我把这些dlls放在bin文件夹下,这在eclipse中工作得很好。

我使用“Fat Jar Exporter”eclipse插件将我的项目导出为可执行Jar。使用JDK jar实用程序,我注意到jar正在fat jar之外的目标中寻找javafx dll,尽管该dll存在于jar的根目录中。

我如何修改jar清单,以便它从jar中选择这些dll,或者当我从eclipse导出jar时,我应该设置一些路径。

我试着加点玻璃。动态链接库;处理器=x86;osname=win32,在Bundle NativeCode中,但它不起作用。

下面是清单文件的外观,

Manifest-Version: 1.0
Created-By: Fat Jar Eclipse Plug-In
Main-Class: com.bosch.mvci.ui.UI

Name: com/sun/jna/
Implementation-Title: com.sun.jna
Implementation-Vendor: JNA Development Team
Implementation-Version: 3.4.1 (b671)
Specification-Title: Java Native Access (JNA)
Specification-Vendor: JNA Development Team
Specification-Version: 3
Bundle-ManifestVersion: 2
Bundle-Name: jna
Bundle-Description: JNA Library
Bundle-SymbolicName: com.sun.jna
Bundle-Version: 3
Bundle-RequiredExecutionEnvironment: J2SE-1.4
Bundle-Vendor: JNA Development Team
Bundle-ActivationPolicy: lazy
Export-Package: com.sun.jna,com.sun.jna.ptr,com.sun.jna.win32,javafx
Bundle-NativeCode: com/sun/jna/win32-x86/jnidispatch.dll; processor=x8
 6;osname=win32, com/sun/jna/win32-amd64/jnidispatch.dll; processor=x8
 6-64;osname=win32, com/sun/jna/w32ce-arm/jnidispatch.dll; processor=a
 rm;osname=wince,  com/sun/jna/sunos-x86/libjnidispatch.so; processor=
 x86;osname=sunos, com/sun/jna/sunos-amd64/libjnidispatch.so; processo
 r=x86-64;osname=sunos, com/sun/jna/sunos-sparc/libjnidispatch.so; pro
 cessor=sparc;osname=sunos, com/sun/jna/sunos-sparcv9/libjnidispatch.s
 o; processor=sparcv9;osname=sunos,  com/sun/jna/aix-ppc/libjnidispatc
 h.a; processor=ppc;osname=aix, com/sun/jna/aix-ppc64/libjnidispatch.a
 ; processor=ppc64;osname=aix,  com/sun/jna/linux-ppc/libjnidispatch.s
 o; processor=ppc;osname=linux, com/sun/jna/linux-ppc64/libjnidispatch
 .so; processor=ppc64;osname=linux, com/sun/jna/linux-i386/libjnidispa
 tch.so; processor=x86;osname=linux, com/sun/jna/linux-amd64/libjnidis
 patch.so; processor=x86-64;osname=linux, com/sun/jna/linux-arm/libjni
 dispatch.so; processor=arm;osname=linux, com/sun/jna/linux-ia64/libjn
 idispatch.so; processor=ia64;osname=linux,  com/sun/jna/openbsd-i386/
 libjnidispatch.so; processor=x86;osname=openbsd, com/sun/jna/freebsd-
 i386/libjnidispatch.so; processor=x86;osname=freebsd, com/sun/jna/fre
 ebsd-amd64/libjnidispatch.so; processor=x86-64;osname=freebsd,  com/s
 un/jna/darwin/libjnidispatch.jnilib; osname=macos,glass.dll; processo
 r=x86;osname=win32,html" target="_blank">javafx-font.dll; processor=x86;osname=win32,

共有1个答案

澹台冯浩
2023-03-14

这实际上是正确的:

默认情况下,Windows会查找一个。当前用户目录中的dll(用Java术语来说,这是user.dirSystem属性)

Java应用程序无法从Jar内部加载DLL。您需要将其复制到windows可以查看的地方(只需复制到user.dir即可)

 类似资料:
  • 本文向大家介绍如何使用HTML5地理位置查找位置?,包括了如何使用HTML5地理位置查找位置?的使用技巧和注意事项,需要的朋友参考一下 HTML5 Geolocation API使您可以与自己喜欢的网站共享位置。JavaScript可以捕获您的纬度和经度,并且可以发送到后端Web服务器,并进行精美的位置感知操作,例如查找本地商家或在映射上显示您的位置。 地理位置API使用全局导航器对象的新属性,即

  • 是否有可能为Spring Boot可执行JAR设置工作目录? 这没有帮助。

  • 我已经在我的Java项目中复制了IE exe并导出了Java项目,包括IE exe。当我运行JAR时,它无法选择IE exe路径。请救命!蒂亚!

  • 问题内容: 我有一个2的幂的整数输入(1、2、4、8等)。我希望函数不使用log()返回位位置。例如,对于上述输入,对于C#,将分别返回{0,1,2,3}。另外,如果可以在SQL中完成。 谢谢! 问题答案: 我发现执行此操作最快的代码来自Bit Twiddling Hacks网站。具体而言,基于DeBruijn序列的查找。参见http://graphics.stanford.edu/~seande

  • 我在 Mac OS 上ANDROID_HOME时遇到问题。我正在尝试将平台Android添加到本机脚本应用程序,我有这条消息: 我检查了我是否有SDK,是的,我有。Android Studio向我展示了这个: 我发现我在< code >/usr/local/Cellar/Android 里也有android sdk 在我有Xamarin和Homebrew之前,我认为它们会安装Android SKD