2014-02-28 16 views
1

我有点困惑这个错误。我是新来的Java和错误似乎很自我解释,但我检查了我的路径(甚至定义我自己的),它仍然无法找到这个库。有什么我做错了吗?见目录的截图及以下错误截图:UnsatisfiedLinkError,但图书馆在路径

compiler error directory

UPDATE

new error

更新2

如果我创建一个新的NetBeans项目能正常工作。相同的代码和一切。如果我创建新的IntelliJ项目,我会在上面得到这个错误。我必须失去了一些东西在的IntelliJ

更新3

找到了解决办法。在IntelliJ中添加依赖关系有点不同。感谢所有的帮助。

http://www.jetbrains.com/idea/webhelp/configuring-module-dependencies-and-libraries.html

+0

除非有很好的理由,否则您可能需要使用IDE来运行程序。如果你正在使用intelliJ,你为什么要从终端上运行它们? – sushain97

+0

@ sushain97我不是,我只是拍摄了IDE中的终端输出。 – Will

+0

请提供有关所涉图书馆的更多信息。它可以帮助。 –

回答

1

Obidisc4j是一个.jar文件。你只是没有在资源管理器中看到它的扩展。 System.loadLibrary不加载常规jar文件。它们由JVM的classLoader自动加载。

+0

啊我看到了,所以这个错误来自于试图加载相关的DLL。 – Will

+1

没错。根据此文件:http://www.sebeto.com/intranet/ftpscambio/RFID_FEIG/SDK/Sy%20Software%20Development%20Support/ID%20OBIDISC4J%20-%20Documentation/H31101-16e-ID-B.pdf,第16页,你应该有陪同dll左右的文件。检查您是否正确安装了它们。 –

+1

这是有趣的部分。我将所有库列在与obidisc4j.dll相同的目录中。不知道还有什么依赖。 – Will

1

您使用的是本机库。如果该库位于类路径中,则无关紧要。有4种方法可以使Java运行时在运行时加载共享库:

  1. 调用System.load以从明确指定的绝对路径加载.so。
  2. 将共享库复制到已在java.library.path中列出的路径之一
  3. 修改LD_LIBRARY_PATH环境变量以包含共享库所在的目录。
  4. 使用-D选项在命令行中指定java.library.path。
1

好像你的应用程序试图找出obidisc4j.dll(适用于Windows)或obidisc4j.so(对于Linux)。该文件必须存在于PATH中(但不包括类路径)。如果您不确定搜索到的Java应用程序的PATH是什么,那么可以在发生异常之前编写以下语句来查找PATH。

System.out.println(System.getProperty("java.library.path"));

这会告诉你在哪里你的DLL或SO文件应该被放置的路径。您只需要将文件放置在其中一个N路径中。