我正在遵循本指南" How to Create a JNI with NetBeans":
使用此SO question中的代码:
我已经生成了.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));
}
我的代码:
#include "AddingControllersToGUI.h"
jint JNICALL Java_addingcontrollerstogui_AddingControllersToGUI_intMethod
(JNIEnv * env, jobject object, jint param1) {
return param1 * param1;
}
答案 0 :(得分:1)
您需要将DLL加载到程序中。在本机方法之前编辑并将以下内容插入到您的Java代码中:
static {
System.load("YourNetbeansFolder\\YourProject\\dist\\YourNative.dll");
}
static {}将在首次访问AddingControllersToGUI时运行此方法(因此在调用intMethod()之前)。
显然,需要修改该代码中的文件夹以指向DLL的位置。
当您实际构建和分发程序时,您需要弄清楚如何加载此DLL。例如,在Minecraft中,DLL / SO(SO是基于UNIX的操作系统的#34; DLL和#34;)被提取到%APPDATA%/。minecraft /(或类似UNIX的〜/ .minecraft)并从那里装载。
现在,这应该足够......!