如何将Java null参数传递给使用JNA编译为C代码的本机方法?

时间:2018-02-07 23:03:58

标签: java c java-native-interface jna

我正在尝试使用包裹C库Java librarylibudev。我需要调用的方法之一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?

1 个答案:

答案 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类。