【发布时间】:2011-09-04 21:56:26
【问题描述】:
我已尝试通过引用可能的重复项来解决此问题,但它们似乎都没有帮助。
这是我用来在 Java 中调用 Win API 方法以获取当前 Windows 用户名和本机 Windows 消息框的代码,但我收到 UnsatisfiedLinkError 表示我的代码无法找到 @ 987654322@ 我正在尝试调用的方法。
public class TestNative
{
public static void main(String[] args)
{
long[] buffer= { 128 };
StringBuffer username = new StringBuffer((int)buffer[0]);
GetUserNameA(username,buffer);
System.out.println("Current User : "+username);
MessageBoxA(0,"UserName : "+username,"Box from Java",0);
}
/** @dll.import("ADVAPI32") */
static native void GetUserNameA(StringBuffer username,long[] buffer);
/** @dll.import("USER32") */
private static native int MessageBoxA(int h,String txt,String title,int style);
}
在 Java 中调用本机 Windows 方法的可能(相对简单)解决方案是什么。我意识到它会扼杀 Java 作为跨平台语言的原因,但我需要为 Windows 开发一个项目,用 Java 开发。
谢谢。
更新
正如 David Heffernan 建议的那样,我尝试将 MessageBox 的方法签名更改为 MessageBoxA,但仍然无法正常工作。
【问题讨论】: