首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JNA NoSuchMethodError User32平台地图

使用JNA NoSuchMethodError User32平台地图
EN

Stack Overflow用户
提问于 2018-11-08 22:54:30
回答 3查看 8K关注 0票数 2

在第一次尝试使用User32.Instance时,我收到了以下错误:

线程"main“java.lang.NoSuchMethodError: java.lang.NoSuchMethodError中的异常 在com.sun.jna.platform.win32.User32.(User32.java:48)

同时试图运行一个JNA预定义的映射的视窗User32类函数。

我尝试运行以下代码:

代码语言:javascript
复制
HWND hwnd = User32.INSTANCE.FindWindow(null,"new 2 - Notepad++");
User32.INSTANCE.SetForegroundWindow(hwnd);

我是否必须声明我自己的接口,还是我能够使用位于JNA平台中的User32 jna映射?我做错什么了?

编辑:错误出现在com.sun.jna.platform.win32.user 32中的一行:

代码语言:javascript
复制
User32 INSTANCE = Native.load("user32", User32.class, W32APIOptions.DEFAULT_OPTIONS);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-10 11:42:26

通过编译一个旧的jna包(预-5.0.0)和一个新的jna-platform包(5.0.0),我能够重现这个bug:

代码语言:javascript
复制
Exception in thread "main" java.lang.NoSuchMethodError: com.sun.jna.Native.load(Ljava/lang/String;Ljava/lang/Class;Ljava/util/Map;)Lcom/sun/jna/Library;
    at com.sun.jna.platform.win32.User32.<clinit>(User32.java:48)
    at sandboxjava.Main.main(Main.java:8)

问题是,JNA在5.0.0版中反对使用Native.loadLibrary方法,并引入了Native.load方法。较新的jna-platform包使用新方法,但由于jna包是旧版本,所以包中根本不存在load方法。

您应该将jna包升级到5.0.0 (撰写本文时最晚),或者将jna-platform降级到5.0.0之前的版本。

票数 3
EN

Stack Overflow用户

发布于 2019-10-03 10:18:11

使用下面的依赖项更新maven,它对我有效。

代码语言:javascript
复制
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>4.5.1</version>
    </dependency>
票数 1
EN

Stack Overflow用户

发布于 2021-08-09 10:10:36

在我的项目中,当以下三个依赖项同时存在时,会发生此错误。我将tess4j依赖项移到最后一个,它可以工作。

代码语言:javascript
复制
<dependency>
           <groupId>net.sourceforge.tess4j</groupId>
           <artifactId>tess4j</artifactId>
           <version>3.4.0</version>
</dependency>
<dependency>
           <groupId>com.sun.jna</groupId>
           <artifactId>jna</artifactId>
           <version>4.4.0</version>
           <scope>system</scope>
           <systemPath>${project.basedir}\src\resources\lib\opencv\jna- 
           4.4.0.jar</systemPath>
</dependency>
<dependency>
            <groupId>com.sun.jna.paltform</groupId>
            <artifactId>paltform</artifactId>
            <version>4.4.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}\src\resources\lib\opencv\jna-platform-4.4.0.jar</systemPath>
</dependency>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53217390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档