如何通过Eclipse启动将本机库添加到“ Java.library.path”中(而不是覆盖它)

StackOverflow https://stackoverflow.com/questions/661320

我有一个需要添加到的本地图书馆 Java.Library.Path. 。与JVM参数 -djava.library.path =路径... 我可以根据需要设置路径。

我的问题是,我的其他库(Pentaho报告)基于默认的Java.library.path(包括系统目录等)搜索字体,并且手动设置覆盖了默认路径。

所以:我怎么能 添加 默认java.library.path而不是覆盖它的路径条目(似乎是用-djava.library.path完成的)? (我不想手工添加默认路径,这不是为部署而言)

编辑:对不起,缺少详细信息;我正在与Eclipse合作。 (部署是用JNLP完成的,我可以在那里使用 Nativelib 在下面 资源)

有帮助吗?

解决方案

忘记了这个问题...我实际上是在问Eclipse,很抱歉没有说明这一点。答案似乎太简单了(至少使用3.5;可能也有较旧的版本):

Java运行配置的参数:VM参数:

-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"

一定不能忘记引号,否则路径空间存在问题。

其他提示

如果您想添加本地库而不干扰 java.library.path 在Eclipse的开发时间(避免包含绝对路径并必须在启动配置中添加参数),您可以为每个JAR的本机库位置提供路径 爪哇构建路径 对话在下 本地图书馆位置. 。请注意,本机库文件名必须与JAR文件名相对应。另请参阅此 详细说明.

SWT将必要的本地DLL放入罐子中。搜索“ org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar”。

dll必须在罐子的根部,必须签署jar,并且必须用校验和在meta-inf/subtest.mf中出现DLL才能将其捡起。

在窗户中,这样:

-djava.library.path =“ c:/mylibpath;%路径%”

%路径%是您的旧-djava.library.path

https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239 指出,Eclipse的发射器中没有实施替代机制,至少没有发布Juno。

因此,(几乎)几乎不可能将另一个库文件夹附加到Java.library.path时,在启动Eclipse时,没有事先了解默认设置。

我几乎写了,因为应该可以让Eclipse启动,将Java.library.path的内容丢入一个命令中。垃圾场将被解析,然后作为发射Eclipse的输入,即

#!/bin/bash
# get default value of java.library.path (somehow)
default_lib_path=$( start_dump_stop_eclipse_somehow )  

# now launch Eclipse
eclipse --launcher.appendVmargs \
         -vmargs \
         -Djava.library.path="/my/native/lib/folder:${default_lib_path}"

你能通过打电话来解决这个问题吗 system.load() 以编程方式加载您的本地库?这种方法(与 System.loadLibrary())允许您指定一个绝对路径。

在UNIX系统中,您可以将其附加到ld_library_path环境变量。在Windows上,JVM自动将系统属性java.library.path设置为路径;因此,如果DLL在您的路径上,那么您就可以了。

窗口 - >首选项 - > Java->已安装的JRE。然后选择当前的JRE(JDK),然后单击“编辑”。填写默认VM参数:-djava.library.path =/usr/local/xuggler/lib。完毕!

罗布·埃尔斯纳(Rob Elsner)在上述评论中提供的解决方案非常有效(OSX 10.9,Eclipse Kepler)。必须将其附加道路附加到以“:”为单位的路径。

您也可以使用$ {system_property:java.library.path} - Rob Elsner 10 Nov '10 '10 at 23:01

本机库文件名必须与JAR文件名相对应。这非常重要。请确保JAR名称和DLL名称相同。另外,请参阅Fabian Steeg的帖子,我的下载Jawin包含DLL和JAR的不同名称。是Jawin.jar和Jawind.dll,在DLL文件名中注意额外的“ D”。我只是将其重命名为Jawin.dll,并将其设置为Eclipse中的本地图书馆,如Post中所述”http://www.eclipsezone.com/eclipse/forums/t49342.html"

由于某种原因,我无法让多个文件夹工作(好一段时间了,但是一旦我需要更多的dll并添加了更多文件夹,没有路径中的白色空间)。然后,我将所有需要的DLL复制到一个文件夹中,并将其作为我的 Java.Library.Path 它起作用了。我没有解释 - 如果有人这样做,那就太好了。

许多现有答案假设您想为特定项目设置此设置,但是我需要将其设置为Eclipse 本身 为了支持SQL Server JDBC驱动程序的集成身份验证。

为此,我跟随 这些说明 用于从Java Commandline启动Eclipse,而不是其正常启动器。然后,我只是修改了该脚本以将我的-djava.library.path参数添加到Java命令行。

在窗户上,我发现重要的是 从命令行开始日食 前提是本机DLL在您的路径中的目录中,而不是从开始菜单或快捷方式中。显然,这确保了正确的目录在路径上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top