【问题标题】:JInput on RaspberryPi树莓派上的 JInput
【发布时间】:2014-01-18 01:39:14
【问题描述】:

我正在尝试让 JInput 在 raspeberryPi 上工作。我知道在没有 ide 的情况下使用 JInput 并不理想,但是 Raspberry Pi 的速度太慢,无法与其中的大多数一起使用。我已经成功地从 Windows 上的命令行编译和运行我的程序。但是,在 pi 上我遇到了麻烦。 pi 正在运行 raspbian,java 版本 1.7.0_40,热点客户端 vm build 24.0-b56。我已经将文件结构设置为:

lib/dist
-jinput-test.jar
-jinput.jar
-控制器
--.dll、.so 文件
--LinuxEnvironmentPlugin.java
垃圾箱
源代码

我正在使用命令

java -Djava.library.path=lib/dist/Controller -Djinput.plugins=net.java.games.input.LinuxEnvironmentPlugin -cp bin:lib/dist/jinput.jar:lib/dist/Controller Main

尝试并运行。

但是,我明白了

“信息:加载库失败:”/libjinput-linux64.so:/libjinput-linux64.so:错误的 ELF 类:ELFCLASSS64”

这就是我困惑的地方。为什么要尝试使用 64 位文件。树莓派有一个 ARM 版本 6 处理器,它只适用于 32 位。那么为什么它首先要寻找 64 位文件呢?我也尝试使用 -d32 选项运行,但这没有帮助。

【问题讨论】:

标签: java raspberry-pi jinput


【解决方案1】:

您需要为 Pi (ARM) 构建的本机共享库 (JNI)。幸运的是,有用于 JInput 的预构建 raspbian 包,其中包含所需的本机库:

  • sudo apt-get install libjinput-java libjinput-java-doc libjinput-jni

您还应该将 uinput 添加到 /etc/modules 的末尾,以便检测到控制器。如果您想要一个漂亮的 GUI 来测试控制器,请尝试安装:

  • sudo apt-get install jstest-gtk

【讨论】:

  • apt-get 安装不干净,但建议的后续 apt-get 更新确实在没有警告的情况下工作。但是我的新 libjinput-linux.so 与以前的版本相同 10204 字节并得到相同的错误: UnsatisfiedLinkError: /home/pi/sketchbook/libraries/GameControlPlus/library/libjinput-linux.so: /home/pi/sketchbook /libraries/GameControlPlus/library/libjinput-linux.so:无法打开共享对象文件:没有这样的文件或目录(可能原因:在 ARM 位平台上无法加载 IA 32 位 .so)
【解决方案2】:

你可以通过

安装Jinput
  • sudo apt-get install libjinput-java libjinput-java-doc libjinput-jni

然后在安装后在你的树莓派上找到这些文件

  • jinput-20100502.jar
  • jinput.jar
  • jinput-test.jar
  • libjinput-linux.so
  • libjinput.so

在您的工作目录中创建一个名为(比方说)lib 的新目录(您可以随意命名) 将上面的所有文件复制到您刚刚创建的目录 lib 中。 然后通过这种方式编译java文件:

  • sudo javac -cp "/usr/share/java/jinput.jar" Example.java

然后以这种方式运行它:

  • sudo java -Djava.library.path=./lib -cp ./lib/*:.示例

如果您从 netbeans 制作 Example.java,请删除顶部的 package 信息行。它应该可以工作。

【讨论】:

  • 这对我不起作用。它仍在寻找 linjinput-linux64.so,它没有添加到“apt-get install”行中。
【解决方案3】:

• 实施了一种解决方法。
• 想在我的Raspberry Pi 上实现操纵杆慢跑,在Grbl CNC 机器上处理3 GUI,但遇到了JInput ARM 不兼容问题。相信 Quark 断言不存在与 ARM 兼容的 JInput 是正确的。这与 StackOverFlow 线程 JInput on RaspberryPi 相矛盾。尝试了 Albert 的扩展 apt-get: but no-joy 尝试了来自 https://qengineering.eu/install-raspberry-64-os.html 的 2021-05-07-raspios-buster-arm64,但无法开始处理。回到 32 位 raspbian。
• 解决方法是添加第二个带有 USB 主机屏蔽的 Arduino Uno,并从屏蔽上运行 Logetech 3D Pro 操纵杆。修改了 Arduino USB Host Shield Library 2.0 le3dp 草图以使所有输出都包含一个识别前导码 (J0Y),它允许处理 serialEvent 识别哪个 USB 端口属于 Grbl Arduino,哪个是操纵杆 Arduino。工作代码在https://github.com/TPMoyer/Grbl4Phttps://github.com/TPMoyer/LE3DP_4_Grbl4P

【讨论】:

    【解决方案4】:

    这会将 jar 文件放在需要添加到 CLASSPATH 的 /usr/share/java/ 中。我仍在寻找需要添加到 LD_LIBRARY_PATH 的 .so 文件

    【讨论】:

    • 在 /usr/lib/jni/ 中找到 libjinput.so 文件
    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多