当前位置: 首页 > 面试题库 >

Linux中的java.lang.UnsatisfiedLinkError

司马高明
2023-03-14
问题内容

我设法进入Linux机器尝试此答案中建议的HotKey库。

我已经编译了示例代码,现在运行该程序,并收到以下消息:

[oracle @ machine jxgrabkey-0.2.1_i386] $ java -classpath lib / JXGrabKey.jar:示例JXGrabKeyTest

线程“主”中的异常** java.lang.UnsatisfiedLinkError:** /home/oracle/javasample/jxgrabkey-0.2.1_i386/lib/libJXGrabKey.so:/usr/lib/libstdc++.so.6:版本`GLIBCXX_3。找不到4.9'(/home/oracle/javasample/jxgrabkey-0.2.1_i386/lib/libJXGrabKey.so所需)
   在java.lang.Runtime._load(libgcj.so.7rh)
   在java.lang.Runtime.load(libgcj.so.7rh)
   在java.lang.System.load(libgcj.so.7rh)
   在JXGrabKeyTest.main(JXGrabKeyTest.java:17)

我知道如何在Windows中处理此问题(仅通过将DLL添加到PATH env var中),但是我不确定Linux。

我已经阅读了有关LD_LIBRARY_PATH和其他一些env var的内容,但是我可以使其正常工作。

有什么建议吗?

编辑

经过mmyers的支持,确定问题并阅读此主题和其他主题。

我可以告诉:

我的系统是:Linux 2.6.18-53.el5

我的GCC版本是(are):

gcc-c ++-4.1.2-14.el5

gcc-gfortran-4.1.2-14.el5

libgcc-4.1.2-14.el5

gcc-4.1.2-14.el5

问题是我需要gcc 4.2.0

Aaand显然我的html" target="_blank">系统没有gcc 4.2.0。

我猜我将不得不等待它来临,否则作者将在以前的版本中重新编译它。

谢谢,非常感谢您的帮助。


问题答案:

你尝试了-Djava.library.path=/path/to/library吗?

编辑:
重新读取该错误消息,在我看来,您正在加载的本机库正试图链接到glibc版本3.4.9,这显然没有安装。您可以检查您使用的glibc版本吗?您正在运行什么Linux发行版?

EDIT2: 问题似乎 仅限 于libstdc
++。我将尽我所能,但是该线程可能有用。建议升级到gcc
4.2;从注释中,您似乎具有版本4.1.2。让我知道那是否行不通。



 类似资料:
  • 问题内容: 此声明: 有人可以解释一下这是什么以及它是如何工作的,在此先感谢 PS请尽可能简化您的答案,我了解Linux中的线程,进程,现在我正在探索各种可能性,而我对此有些犹豫。 问题答案: 考虑如下两个结构: 假设您有一个指向值的指针: 该宏可以帮助你转换到一个指针保存的值值,指向: 宏作品通过计算的偏移量内的,并从中减去很多字节指针。当将其强制转换为时,会给出指向持有此特定“内部”的的有效指

  • 数字调查的主要问题是通过加密或任何其他格式保护重要证据或数据。 基本示例是存储密码。 因此,有必要了解Linux操作系统在数字取证实施中的使用,以保护这些有价值的数据。 所有本地用户的信息大多存储在以下两个文件中 - /etc/passwd etc/shadow 第一个是必需的,它存储所有密码。 第二个文件是可选的,它存储有关本地用户的信息,包括散列密码。 关于将密码信息存储在文件中的安全性问题出

  • 问题内容: 我想创建一个Web应用程序,该应用程序将允许用户上传一些C代码,并查看其执行结果(该代码将在服务器上编译)。用户不受信任,这显然会带来巨大的安全隐患。 因此,我需要为应用创建某种沙箱。在最基本的级别上,我想将对文件系统的访问限制在某些指定的目录中。我无法直接使用chroot jails,因为Web应用程序未以特权用户身份运行。我想设置监狱的suid可执行文件是一个选择。 上载的程序会很

  • 问题内容: Clang有一个非常酷的扩展,名为block,将真正的lambda函数机制带给了C。与block相比,gcc的嵌套函数非常有限。但是,尝试编译一个琐碎的程序: 与,我得到了 似乎我应该使用,但是后来我得到了 有什么提示吗? 问题答案: 在Ubuntu Linux上: : 编译: 工作良好。

  • 问题内容: 我正在将应用程序从Tru64移植到Linux,并且使用limits.h中定义的PID_MAX。Linux没有该定义。如何在不手工阅读的情况下在 c中 找到PID_MAX ?有图书馆吗? 问题答案: 默认值为32768,您可以在中读取系统上的值。 您可以在64位系统(最多2 22 = 4,194,304)上将值设置为更高,方法如下: 在这里阅读更多: http://www.cs.wisc

  • 问题内容: 有什么我可以用来查找目录的linux命令吗?我尝试打印出环境变量(“ env”),但找不到目录。 问题答案: 如果已设置,将打印该值。但是,如果您没有在启动脚本中手动设置它,则可能未设置。 如果您尝试了却找不到任何东西,则Java可能未安装在您的计算机上,或者至少不在您的路径中。根据您拥有的Linux发行版以及是否具有root用户访问权限,可以访问http://www.java.com