我试图在 JAVA 代码中调用 MessageBoxA 函数。以下方法有什么问题,以至于我的程序抛出了很多错误?
package loading.libraries;
public class User32
{
//first case:public native int MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType);
//second: public native int MessageBoxA(int hWnd,String lpText,String lpCaption,int uType);
static
{
System.loadLibrary("User32");
}
}
package loading.libraries;
public class LoadingLibraries
{
public static void main(String[] args)
{
User32 hwapi = new User32();
hwapi.MessageBoxA(0,"Hello","World",0);
}
}
第一:
运行:线程“main”中的异常 java.lang.ClassFormatError:类文件加载/库/MessageBox 中的本机或抽象方法中的代码属性 java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass( ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java: 71) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net .URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:423) 在 sun.misc。Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at loading.libraries.LoadingLibraries.main(LoadingLibraries.java:8) Java Result: 1 BUILD SUCCESSFUL (total时间:2秒)
第二:
运行:线程“main”中的异常 java.lang.UnsatisfiedLinkError: loading.libraries.User32.MessageBoxA(ILjava/lang/String;Ljava/lang/String;I)I at loading.libraries.User32.MessageBoxA(Native Method) at loading.libraries.LoadingLibraries.main(LoadingLibraries.java:10) Java 结果:1 构建成功(总时间:0 秒)