Java 如何更正Native.loadlibrary错误

Java 如何更正Native.loadlibrary错误,java,compiler-errors,native,jna,loadlibrary,Java,Compiler Errors,Native,Jna,Loadlibrary,这是我的密码。我已经导入了JNA外部JAR,但是我无法编译它,因为我收到了“SPI实例=(SPI)Native.loadLibrary(“user32”,SPI.class,new HashMap(){”的错误。错误是: 本机类型中的loadLibrary(String,Class,Map)方法不适用于参数(String,Class,new HashMap(){}) 软件包桌面; 导入java.util.HashMap; 导入com.sun.jna.Native; 导入com.sun.jna.p

这是我的密码。我已经导入了JNA外部JAR,但是我无法编译它,因为我收到了“SPI实例=(SPI)Native.loadLibrary(“user32”,SPI.class,new HashMap(){”的错误。错误是: 本机类型中的loadLibrary(String,Class,Map)方法不适用于参数(String,Class,new HashMap(){})

软件包桌面;
导入java.util.HashMap;
导入com.sun.jna.Native;
导入com.sun.jna.platform.win32.WinDef.UINT\u PTR;
导入com.sun.jna.win32。*;
公共类壁纸转换器{
公共静态void main(字符串[]args){
//提供您自己的路径,而不是使用此路径
String path=“D:\\stone.png”;
SPI.INSTANCE.SystemParametersInfo(
新UINT_PTR(SPI.SPI_Setdesk壁纸),
新UINT_PTR(0),
路径
新UINT_PTR(SPI.SPIF_UPDATEINIFILE | SPI.SPIF_sendwinichange));
}
公共接口SPI扩展StdCallLibrary{
//来自MSDN文章
长SPI_SETDESKWALLPAPER=20;
长SPIF_UpdateInFile=0x01;
长SPIF_sendwinichange=0x02;
@抑制警告(“串行”)
//这是错误开始的地方:
SPI实例=(SPI)Native.loadLibrary(“user32”,SPI.class,new HashMap()){
{
put(选项类型映射器,w32 pitypemapper.UNICODE);
put(选项函数映射器,W32APIFunctionMapper.UNICODE);
}
});
布尔系统参数信息(
行动,
UINT_PTR uiParam,
字符串pvParam,
乌恩图夫维尼尼酒店
);
}
}
试试这个:

    @SuppressWarnings("serial")
    SPI INSTANCE = (SPI) Native.loadLibrary("user32", SPI.class,
            new HashMap<String, Object>() {
                {
                    put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
                    put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
                }
            });
@SuppressWarnings(“串行”)
SPI实例=(SPI)Native.loadLibrary(“user32”,SPI.class,
新HashMap(){
{
put(选项类型映射器,w32 pitypemapper.UNICODE);
put(选项函数映射器,W32APIFunctionMapper.UNICODE);
}
});
答案很简单,方法签名是
com.sun.jna.Native#loadLibrary(java.lang.String、java.lang.Class、java.util.Map)


您必须传递
java.util.Map
实例,而不是
java.util.Map
实例。

本机类型中的loadLibrary(String,Class,Map)方法不适用于参数(String,Class,new HashMap(){})更新的错误消息。这就是我要键入的内容。对于任何混淆,我深表歉意。@Corbin很高兴它有帮助。您可以接受我的回答。(^o^)/
    @SuppressWarnings("serial")
    SPI INSTANCE = (SPI) Native.loadLibrary("user32", SPI.class,
            new HashMap<String, Object>() {
                {
                    put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
                    put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
                }
            });