如何从 Eclipse 设置 java.library.path

Posted

技术标签:

【中文标题】如何从 Eclipse 设置 java.library.path【英文标题】:How to set the java.library.path from Eclipse 【发布时间】:2010-10-31 18:11:18 【问题描述】:

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

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

【问题讨论】:

我已经通过将它添加为 VM 参数来完成它并且它确实有效。你到底是怎么做到的? 【参考方案1】:

不要弄乱库路径! Eclipse 自己构建它!

相反,进入您的项目的库设置,对于需要本机库的每个 jar/etc,在 Libraries 选项卡中展开它。在那里的树视图中,每个库都有源/javadoc 和本机库位置的项目。

具体:选择Project,右键->Properties/Java Build Path/Libraries选项卡,选择一个.jar,展开它,选择Native library location,点击Edit,会出现文件夹选择对话框)

在命令行上弄乱库路径应该是你最后的努力,因为你可能会破坏 eclipse 已经正确设置的东西。

【讨论】:

但是,如果您要添加多个文件夹,这将如何工作? 这是个好问题。为什么一个 jar 中有多个本地库文件夹?我很确定有一种方法可以将本机库本身嵌入到 jar 中,所以这可能是要走的路吗? 我正在处理一个我几乎无法控制的遗留项目。我当然不能改变项目结构。我目前的解决方法是将所有内容都放在我的 PATH 上——但这不是很好。 根据操作系统,您可以创建一个目录,其中包含指向其他库的所有符号链接?或者至少出于开发目的,您可以将所有库复制到一个目录。 我无法做到这一点。我可以添加本机库路径,但是当我单击“确定”一路返回然后再次跳转到项目属性时,它显示“无”。我正在使用 Eclipse Indigo SR2【参考方案2】:

如果您将其添加为 VM 参数,请确保在其前面加上 -D:

-Djava.library.path=blahblahblah...

【讨论】:

查看这篇文章:***.com/a/2309723/510583。 -Djava.library.path="$workspace_loc:project\lib;$env_var:PATH"【参考方案3】:

除了批准答案中描述的方式外,如果您的项目中有单个原生库,还有另一种方式。

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

【讨论】:

太棒了!!!!多谢!!!这解决了我的问题。需要将 dylib 添加到我的项目和 jar 中。设置本机库位置已修复!【参考方案4】:

对于给定的应用程序启动,您可以按照 jim 的说明进行操作。

如果要为整个工作区设置,也可以在下面设置

Window->
  Preferences->
    Java->
      Installed JREs

每个 JRE 都有一个“默认 VM 参数”(如果为运行配置设置了任何 VM 参数,我相信它会被完全忽略。)

您甚至可以使用不同的参数设置不同的 JRE/JDK,让一些项目使用一个,其他项目使用另一个。

【讨论】:

【参考方案5】:

您可以简单地将-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"));
    

【讨论】:

这意味着每个使用你的项目的人也需要把它们放在那里。 谢谢。将 DLL 放入 c:/windows 的想法向我证明,这只是路径问题,而不是 DLL 的问题。【参考方案7】:

以上解决方案都不适合我(带有 JDK 1.7_015 的 Eclipse Juno)。当我将它们从 project_folder/lib 移动到 project_folder 时,Java 只能找到这些库。

【讨论】:

什么?为什么这很重要..? O_o【参考方案8】:

我认为想要设置java.library.path 还有另一个原因。 Subversion 带有许多库,除非可以附加 java.library.path,否则 Eclipse 不会看到这些库。例如我在 OS-X 上,所以库在\opt\subversion\lib 下。它们有很多,我想将它们保留在原处(不要将它们复制到标准的 lib 目录中)。

项目设置无法解决此问题。

【讨论】:

那么,需要在哪里添加java.library.path参数呢?【参考方案9】:

点击运行 单击调试... 新的 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  

等等……

【讨论】:

另外 - 在运行配置中,转到“Common”选项卡并在项目中选择一个位置来保存运行配置。这允许您签入该运行配置(xxxx.launch 文件),以便团队中的其他人可以重复使用它。【参考方案10】:

另一种解决方案是打开“运行配置”,然后在“环境”选项卡中设置 Path,Value。

例如添加一个位于项目根目录的“lib”目录,

    Path  <-  $workspace_loc:name_of_the_project\lib

【讨论】:

但也许直接在 Arguments 选项卡中的 VM 参数 -Djava.library.path【参考方案11】:

记得在 PATH 中包含本机库文件夹。

【讨论】:

【参考方案12】:

我使用的是 Mac OS X Yosemite 和 Netbeans 8.02,我遇到了同样的错误,我找到的简单解决方案就像上面一样,当您需要在项目中包含本机库时,这很有用。 Netbeans 的下一步也是如此:

1.- Right click on the Project
2.- Properties
3.- Click on RUN
4.- VM Options: java -Djava.library.path="your_path"
5.- for example in my case: java -Djava.library.path=</Users/Lexynux/NetBeansProjects/NAO/libs>
6.- Ok

我希望它对某人有用。 我找到解决方案的链接在这里: java.library.path – What is it and how to use

【讨论】:

【参考方案13】:

有时我们无法通过直接右键单击项目来获取 Java 构建路径。 然后去属性....

然后点击java build path

单击选项卡添加外部 jars 并提供您存储 jars 的计算机文件的路径。

【讨论】:

【参考方案14】:

这是另一个修复:

我的构建系统 (Gradle) 在 Eclipse 构建路径中添加了一个必需的本地库 (dll)(右键单击项目 -> 属性 -> Java 构建路径 -> 库)。告诉构建系统不要将本机 dll 库添加到 Eclipse 类路径中解决了这个问题。

【讨论】:

【参考方案15】:

您可以在 Eclipse 中添加 vm 参数。

例子:

-Djava.ext.dirs=cots_lib

cots_lib 是您的外部文件夹库。

【讨论】:

【参考方案16】:

最简单的方法是使用 Eclipse IDE 本身。转到菜单并设置构建路径。使其指向您目录中的 JAVA JDK 和 JRE 文件路径。之后,您可以检查要设置编译文件的构建路径。默认情况下在 bin 文件夹中。最好的办法是让 eclipse 自己处理构建路径,并且只编辑它类似于上面给出的解决方案

【讨论】:

以上是关于如何从 Eclipse 设置 java.library.path的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 下以低优先级从 Eclipse 启动?

如何设置捆绑开发环境(Eclipse Equinox Maven)

如何从 Eclipse 调试 hadoop mapreduce 作业?

如何从我的 Eclipse 项目中删除 javascript 验证?

如何从eclipse环境中获取NDK路径?

如何从 Eclipse 中导出 Jetty 启动配置 [重复]