如何在Eclipse中设置java.library.path

217

如何为整个Eclipse项目设置java.library.path路径?我正在使用一个依赖于特定操作系统文件的Java库,并需要找到.dll/.so/.jnilib。但该应用程序始终退出并显示错误消息,指出在库路径上找不到这些文件。

我想配置整个项目以使用库路径。我尝试将路径作为VM参数添加到某些Eclipse运行配置中,但未成功。


1
我已经通过将其添加为VM参数来完成了,并且它确实起作用了。你是如何做到的? - Michael Myers
16个回答

302

不要修改库路径!Eclipse会自行构建它!

相反,进入项目的库设置,在“Libraries”选项卡中为每个需要本地库的jar /等文件扩展它。在树形视图中,每个库都有源代码/ JavaDoc和本地库位置的项目。

具体来说:选择“Project”,右键单击->“Properties” /“Java Build Path” /“Libraries”选项卡,选择一个.jar文件,将其扩展,选择“Native library location”,单击“Edit”(将出现文件夹选择器对话框)。

在命令行中更改库路径应该是最后的手段,因为您可能会破坏Eclipse已经正确设置的内容。

Native library location


7
如果你有多个文件夹需要添加,那么这该怎么做呢? - Dan
2
这是一个很好的问题。为什么你有一个jar文件对应多个本地库的文件夹呢?我相信有一种方法可以将本地库嵌入到jar文件中,这可能是一个可行的方案。 - John Gardner
1
根据操作系统的不同,您可以创建一个目录,其中包含其他库的所有符号链接?或者至少在开发过程中,您可以将所有库复制到一个目录中。 - John Gardner
2
我无法使其生效。我可以添加本地库路径,但是当我单击“确定”以完全退出并再次进入项目属性时,它会显示“无”。我正在使用Eclipse Indigo SR2。 - bacar
1
java -classpath .:/usr/local/share/java/*.jar -Djava.library.path=/usr/local/lib HelloWorld - spiralmoon
显示剩余9条评论

39

如果你要将它添加为虚拟机参数,请确保在前面加上-D

-Djava.library.path=blahblahblah...

4
请见此帖子:https://dev59.com/3HRB5IYBdhLWcg3wUVtd#2309723。-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}" 的意思是将项目工作区的 lib 目录和系统环境变量 PATH 的路径添加到 Java 库路径中。 - leo

24

除了已批准答案中描述的方法外,如果您的项目中只有单个本地库,还有另一种方法。

  • 在项目属性->Java构建路径->“源”选项卡中,有一个您的源文件夹列表
  • 对于每个条目,都有“本机库位置”,它也支持工作区内的路径。
  • 这将使Eclipse将其添加到您的java.library.path

3
太棒了!非常感谢!这解决了我的问题。需要将dylib文件和一个jar文件添加到我的项目中。通过设置本地库位置来修复它! - ufk

12

根据Jim的说法,对于一个特定的应用程序启动,你可以这样做。

如果你想将其设置为整个工作区,你还可以在下面进行设置。

Window->
  Preferences->
    Java->
      Installed JREs
每个JRE都有一个“默认VM参数”(如果设置了运行配置的任何VM参数,则我认为完全会被忽略)。您甚至可以使用不同的参数设置不同的JRE / JDK,并使某些项目使用一个,其他项目使用另一个。

8
您可以简单地将-Djava.library.path=yourPath添加到eclipse.ini中。

6

只需将*.dll文件添加到您的c:/windows目录中。

您可以从以下代码中获取java.library.path,然后在您获取的任何路径下添加您的dll文件。

import java.util.logging.Logger;

public class Test {


    static Logger logger = Logger.getLogger(Test.class.getName());
    public static void main(String[] args) {
    logger.info(System.getProperty("java.library.path"));
    }
}

这意味着每个使用你的项目的人也需要把它们放在那里。 - xtofl
谢谢您。将DLL文件放入 c:/windows 的想法证明了这只是一个路径问题,而不是DLL文件的问题。 - vegemite4me

5

以上的解决方法都不能解决我的问题(在使用JDK 1.7_015的Eclipse Juno中)。只有在我将库从project_folder /lib移动到project_folder时,Java才能找到这些库。


什么?为什么那很重要..? O_o - Campa

5

我认为设置java.library.path的另一个原因是想要使用Subversion。Subversion带有许多库,如果没有将java.library.path添加到系统路径中,Eclipse将无法识别这些库。例如,我在OS-X上,所以库位于\opt\subversion\lib下。这里有很多库,我希望将它们保留在原地(而不是将它们复制到标准库目录中)。

项目设置无法解决这个问题。


那么,我需要在哪里添加java.library.path参数? - eLRuLL

4

点击运行
点击调试...
新建Java应用程序
点击参数选项卡
在第二个框(VM参数)中添加-D条目

-Xdebug -verbose:gc -Xbootclasspath/p:jar/vbjorb.jar;jar/oracle9.jar;classes;jar/mq.jar;jar/xml4j.jar -classpath -DORBInitRef=NameService=iioploc://10.101.2.94:8092/NameService  

etc...


1
此外,在运行配置中,转到“公共”选项卡并选择项目中的一个位置以保存运行配置。这样可以检入该运行配置(xxxx.launch 文件),以便团队中的其他人可以重用它。 - Scott Stanchfield

3
另一个解决方案是打开“运行配置”,然后在“环境”标签中设置 {路径,值} 对。例如,要添加位于项目根目录下的“lib”目录:
    Path  <-  ${workspace_loc:name_of_the_project}\lib

但是也许直接在“参数”选项卡中使用VM参数“-Djava.library.path”? - Campa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接