我正在尝试使用包裹C库Java library的libudev。我需要调用的方法之一choice = int(input("..."))
if choice == 2:
# ...
采用两个String参数,第二个需要是addMatchSubsystemDevtype(final String subsystem, final String devtype)
。可以看到C代码中的一个示例here(ctrl + f null)。但是,当我尝试在Java中执行此操作时,JNA会抛出null
,如下所示:
NullPointerException
例外:
Monitor monitor = Monitor.newFromNetlink(udev, "udev");
monitor.addMatchSubsystemDevtype("video4linux", null);
有没有办法可以从Java向这个C方法传递null?
答案 0 :(得分:0)
@ user2543253指出它不是JNA问题,而是Java库的问题。我通过简单地添加
来解决问题public int addMatchSubsystem(final String subsystem) {
return UdevLibrary.INSTANCE().udev_monitor_filter_add_match_subsystem_devtype(
getPointer(), StringUtil.asPointer(subsystem), null);
}
到图书馆的Monitor类。