【问题标题】:Java error - cannot find library in java.library.path?Java 错误 - 在 java.library.path 中找不到库?
【发布时间】:2011-11-03 23:27:56
【问题描述】:

我收到如下错误消息:

libraryname.dll 无法被 Windows 加载。制作 确保该库在您的 Path 环境变量中。例外 在线程“main”中 java.lang.UnsatifiedLinkError: no libraryname in java.library.path.

这个错误是由于我试图通过 cmd 在 Windows XP 上运行 jar 文件造成的。我想知道,java.library.path 到底在哪里?我已经将 C:\Program Files\Java\jdk1.6.0_26 添加到我的 PATH 中,但它仍然给我错误。你将如何调试这个?

谢谢。

【问题讨论】:

  • libraryname.dll 的确切名称很重要。
  • 确切名称?你的意思是?它有多重要?谢谢。
  • @Thorbjørn 确切的名字并不重要,它所在目录的路径就足够了
  • PATH 和库路径是两个不同的东西。你能发布一些显示问题的示例代码吗?
  • 原来的错误文本是“库 libraryname.dll 不能...”吗?

标签: java windows path


【解决方案1】:

您可以简单地将 java.library.path 作为系统属性传递,如下所示:

java -Djava.library.path=<path_to_dll> <main_class>

首先你需要找出 libraryname.dll 的位置并将其添加到上面的“path_to_dll”中。

【讨论】:

  • 应该包括什么?
  • 包含main()方法的类,即程序的入口点
  • 作为 jna.library.path 为我工作
【解决方案2】:

错误基本上是说它找不到您的本机库。 Java 尝试通过查看 java.library.path 属性来定位您的库

这是您需要的系统环境,因此 Java 可以在您运行应用程序时找到您的本机库。几种方法:

  • 运行程序时使用 java -Djava.library.path=[path to your library]
  • 您也可以从代码中执行此操作。

    
    System.setProperty( "java.library.path", "/path/to/libs" );
    
  • 从您的 IDE 进行设置。可以在这个 SO 问题 How to set java.library.path from eclipse

  • 中找到 Eclipse 的示例

编辑:下面的一个很好的评论指出 #2 不会 100% 工作,因为您可能没有在调用 getProperty() 之前设置它。错过了这一点,感谢您指出这一点。

【讨论】:

  • 您建议的第二个选项不适用于“java.library.path”属性。见:stackoverflow.com/questions/5419039/…
  • 嗯,它并不总是有效。但如果他在 getProperty() 之前设置它,我认为它会起作用。好点,我应该在我的回答中提到并接受对错过这一点的反对票
  • 问题是要澄清 library.path,我们应该向他提供可能的信息。我同意从代码中设置它不是一个好习惯。为该评论 +1
  • 这不是一个好的做法,您不能从代码中设置该特定属性。该属性作为 JVM 初始化的一部分被加载并且值被缓存;以编程方式更改属性将无效。
猜你喜欢
  • 2014-05-18
  • 2011-07-31
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 2011-05-15
  • 2013-01-28
相关资源
最近更新 更多