2

我正在尝试让 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
-Controller
--.dll, .so 文件
--LinuxEnvironmentPlugin.java
bin
src

我正在使用命令

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 选项运行,但这没有帮助。

4

4 回答 4

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
于 2017-01-02T04:56:25.113 回答
0

• 实施了一种解决方法。
• 想在我的Raspberry Pi 上实现操纵杆慢跑,在Grbl CNC 机器上处理3 GUI,但是遇到了JInput <==> ARM 不兼容问题。相信 Quark 断言不存在与 ARM 兼容的 JInput 是正确的。这与 RaspberryPi 上的 StackOverFlow 线程JInput相矛盾 。尝试了 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

于 2021-08-26T11:23:51.533 回答
0

您可以通过以下方式安装 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,请删除顶部的包信息行。它应该工作。

于 2018-01-16T14:36:16.823 回答
-1

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

于 2017-09-30T13:16:38.660 回答