Я пытался решить эту проблему, ссылаясь на возможные дубликаты, но ни один из них, похоже, не помог.
Вот код, который я использую для вызова методов Win API в Java, чтобы получить текущее имя пользователя Windows, и собственный Windows MessageBox, но я получаю UnsatisfiedLinkError
, который говорит, что мой код не может найти native
метод, который я пытаюсь вызвать.
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);
}
Что может быть моим возможным (относительно простым) решением для вызова нативных методов Windows в Java. Я понимаю, что это убьет саму причину того, что Java является кроссплатформенным языком, но мне нужно поработать над проектом для Windows, который будет разработан на Java.
Спасибо.
Обновление
Как предположил Дэвид Хеффернан, я попытался изменить сигнатуру метода с MessageBox
на MessageBoxA
, но все равно он не работает.