首页 > 解决方案 > 无法开始使用 JNA

问题描述

我刚刚在 Win10 x64 上安装了 Apache NetBeans IDE 11.1、JDK 13、openjfx-13 和 JNA-platform-5.4.0。我无法使用 JNA 到达一垒。以下代码在 com.sun.jna.Native 的导入语句中将 Native 标记为未知符号。对 Native.load 的调用和导入语句直接取自https://github.com/java-native-access/jna/blob/master/www/GettingStarted.md

此屏幕截图显示项目库列表1

package jrailroad;

import com.sun.javafx.PlatformUtil;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.Kernel32Util;
import com.sun.jna.Native;

public class ComPort
{                           // class ComPort
public int os;

public static final int OS_WINDOWS = 0;     // a Windows platform
public Kernel32 k32 = null;

ComPort()
    {                       // ComPort.ComPort
    os = -1;
    if (PlatformUtil.isWindows())
        {                   // windows
        os = OS_WINDOWS;
        k32 = (Kernel32) Native.load("kernel32", Kernel32.class);
        }                   // windows
    }                       // ComPort.ComPort
}                           // class ComPort

标签: jna

解决方案


正如您发布的入门链接所述,

Java Native Access (JNA) 有一个组件 jna.jar;支持的本机库 (jnidispatch) 包含在 jar 文件中。... 首先下载最新版本的 JNA 并在项目的 CLASSPATH 中引用 jna.jar。

您没有包括jna.jar,而是将用户贡献的映射包括到各种平台,jna-platform.jar. 您在评论中提到的链接包括指向这两个文件的链接:

JNA

jna-5.4.0.jar

这是 JNA 的核心工件,仅包含绑定库和核心帮助程序类。

JNA平台

jna-平台-5.4.0.jar

该工件包含跨平台映射和许多常用平台功能的映射,包括大量 Win32 映射以及一组简化本机访问的实用程序类。

正如评论中提到的,jar当您的依赖项本身具有依赖项时,手动包含文件很快就会变得不可持续。您应该学习如何使用包管理器,例如 Maven、Gradle 或 Ivy。您的 IDE 对此有一个流程,只需搜索“netbeans maven”即可获得更多指导。


推荐阅读