4

我已经设法进入一台 linux 机器来尝试这个答案中建议的 HotKey 库。

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

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

线程“main”中的异常**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 和其他一些环境变量的东西,但我可以让它工作。

有什么建议吗?

编辑

在 mmyers 的支持下确定问题并阅读此线程其他.

我可以告诉:

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

我的 GCC 版本是(是):

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 显然我的系统没有 gcc 4.2.0。

我想我将不得不等待它来或作者在以前的版本中重新编译它。

mmyers,非常感谢您的帮助。

4

2 回答 2

6

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

编辑:重新阅读错误消息,在我看来,您正在加载的本机库正在尝试链接到 glibc 版本 3.4.9,这显然没有安装。你能检查一下你有什么版本的 glibc 吗?您正在运行什么 Linux 发行版?

EDIT2:问题似乎缩小到 libstdc++。我即将达到我的知识边缘,但这个线程可能有用。它建议升级到 gcc 4.2;从评论中,您似乎拥有 4.1.2 版本。如果这不起作用,请告诉我。

于 2009-02-11T21:30:07.450 回答
1

subes,JXGrabKey 在这里开发...

我自己对这个错误了解不多,但你对 gcc 和/或 libstdc++ 的领导应该是正确的

我个人使用的是 Ubuntu 8.10 atm 附带的 gcc 版本。我总是坚持使用最新发布的版本。

当前版本:g++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2

我的机器上安装了以下 libstdc++ 软件包: http://packages.ubuntu.com/intrepid/libstdc++5 http://packages.ubuntu.com/intrepid/libstdc++6

希望这会有所帮助,如果您发现任何有用的信息,请告诉我。:) 也许我必须用旧版本的 gcc 编译 jxgrabkey 才能发布,所以它向下兼容?有没有人有明智的建议?^^

于 2009-02-17T18:04:19.023 回答