私は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);
}
}
1位:
run:スレッド "main"の例外java.lang.ClassFormatError:java.lang.ClassLoader.defineClass1(ネイティブメソッド)のクラスファイルloading / libraries /MessageBoxのネイティブメソッドまたは抽象メソッドのコード属性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)at java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)at java.security.AccessController.doPrivileged(Native Method)at java.net .URLClassLoader.findClass(URLClassLoader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:423)atsun.misc。Launcher $ AppClassLoader.loadClass(Launcher.java:308)at java.lang.ClassLoader.loadClass(ClassLoader.java:356)at load.libraries.LoadingLibraries.main(LoadingLibraries.java:8)Java結果:1 BUILD SUCCESSFUL(合計時間:2秒)
2位:
run:スレッド "main"の例外java.lang.UnsatisfiedLinkError:loading.libraries.User32.MessageBoxA(ILjava / lang / String; Ljava / lang / String; I)I at load.libraries.User32.MessageBoxA(Native Method)at load.libraries.LoadingLibraries.main(LoadingLibraries.java:10)Java結果:1 BUILD SUCCESSFUL(合計時間:0秒)