JNI 依赖和跨平台构建
JNI Dependencies and cross-platform build
我目前正在为一个项目工作,我需要为其检测 Oculus 设备是否已插入。
我这样做是使用 usb4java 库 usb4java。
<dependency>
<groupId>org.usb4java</groupId>
<artifactId>usb4java-javax</artifactId>
<version>1.2.0</version>
</dependency>
我想使用安装在 ubuntu 服务器上的 Maven 和 Jenkins 构建我的程序,但我遇到了这个库的问题:如果我的程序是使用这台机器构建的,我的函数不工作,但如果我在 windows 上编译它,我的函数工作起来就像一个魅力。
这是我使用的函数:
if (hub == null) {
UsbServices services = UsbHostManager.getUsbServices();
hub = services.getRootUsbHub();
}
//List all the USBs attached
List devices = hub.getAttachedUsbDevices();
Iterator iterator = devices.iterator();
boolean res = false;
while (iterator.hasNext()) {
UsbDevice device = (UsbDevice) iterator.next();
UsbDeviceDescriptor desc = device.getUsbDeviceDescriptor();
if (device.isUsbHub()) {
res = res || isOculusPlugged((UsbHub) device);
}
else {
try {
if (desc.idVendor() == 10291) {
res = true;
}
} catch (NullPointerException ignored) {}
}
}
我没有收到任何错误,但是检测在 linux 构建的版本中不起作用(res 始终为 false)。
我检查过,包括 Windows 在内的所有 JNI 库都在 JAR-With-Dependencies 中,我是 运行。
感谢您的帮助,
卢卡斯
原来是路径的问题
我目前正在为一个项目工作,我需要为其检测 Oculus 设备是否已插入。
我这样做是使用 usb4java 库 usb4java。
<dependency>
<groupId>org.usb4java</groupId>
<artifactId>usb4java-javax</artifactId>
<version>1.2.0</version>
</dependency>
我想使用安装在 ubuntu 服务器上的 Maven 和 Jenkins 构建我的程序,但我遇到了这个库的问题:如果我的程序是使用这台机器构建的,我的函数不工作,但如果我在 windows 上编译它,我的函数工作起来就像一个魅力。
这是我使用的函数:
if (hub == null) {
UsbServices services = UsbHostManager.getUsbServices();
hub = services.getRootUsbHub();
}
//List all the USBs attached
List devices = hub.getAttachedUsbDevices();
Iterator iterator = devices.iterator();
boolean res = false;
while (iterator.hasNext()) {
UsbDevice device = (UsbDevice) iterator.next();
UsbDeviceDescriptor desc = device.getUsbDeviceDescriptor();
if (device.isUsbHub()) {
res = res || isOculusPlugged((UsbHub) device);
}
else {
try {
if (desc.idVendor() == 10291) {
res = true;
}
} catch (NullPointerException ignored) {}
}
}
我没有收到任何错误,但是检测在 linux 构建的版本中不起作用(res 始终为 false)。
我检查过,包括 Windows 在内的所有 JNI 库都在 JAR-With-Dependencies 中,我是 运行。
感谢您的帮助, 卢卡斯
原来是路径的问题