我遵循本指南"如何使用NetBeans创建JNI":
使用这个SO问题的代码:
我已经生成了一个.dll
和包文件,但不确定如何处理它们;如何告诉java在哪里可以使用NetBeans找到它们?
我的java代码:
package addingcontrollerstogui;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class AddingControllersToGUI extends Application {
public native int intMethod(int i);
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
System.loadLibrary("Main");
System.out.println(new AddingControllersToGUI().intMethod(2));
}
我的c代码:
#include "AddingControllersToGUI.h"
jint JNICALL Java_addingcontrollerstogui_AddingControllersToGUI_intMethod
(JNIEnv * env, jobject object, jint param1) {
return param1 * param1;
}
您需要将DLL加载到程序中。编辑以下内容并将其插入到java代码中,就在本机方法之前:
static {
System.load("YourNetbeansFolder\YourProject\dist\YourNative.dll");
}
static{}将在首次访问AddingControllersToGUI时运行此方法(因此在调用intMethod()之前)。
显然,该代码中的文件夹需要修改以指向DLL的位置。
当你真正构建和分发你的程序时,你需要弄清楚如何加载这个DLL。例如,在Minecraft中,使用的DLL/SO(SO是基于UNIX的操作系统的"DLL")文件被提取到%APPDATA%/.Minecraft/(或类UNIX中的~/.Minecraft)中,并从那里加载。
就目前而言,这应该足够了。。。!