java - JNI Windows Netbeans 不满意的链接错误

标签 java netbeans javafx java-native-interface

我正在遵循本指南“How to Create a JNI with NetBeans”:

使用此 SO question 中的代码:

我已经生成了一个 .dll 和包文件,但不确定我要用它们做什么;我如何使用 NetBeans 告诉 java 在哪里找到它们?

我的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 代码中,就在 native 方法之前:

static {
    System.load("YourNetbeansFolder\\YourProject\\dist\\YourNative.dll");
}

static{} 将在首次访问 AddingControllersToGUI 时运行此方法(甚至在调用 intMethod() 之前)。

显然,需要修改该代码中的文件夹以指向您的 DLL 的位置。

当您实际构建和分发您的程序时,您需要弄清楚您希望如何加载此 DLL。例如,在 Minecraft 中,使用的 DLL/SO(SO 是基于 UNIX 的操作系统的“DLL”)文件被提取到 %APPDATA%/.minecraft/(或类 UNIX 中的 ~/.minecraft)并从那里加载.

现在,这应该足够了......!

关于java - JNI Windows Netbeans 不满意的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699474/

相关文章:

java - jmeter中如何实现csv文件的多个http请求?

java - Netty 有哪些 Servlet 容器

java - 错误自己的 Maven 依赖关系到新的 FXML 项目

Netbeans 标准 FXML 应用程序出现 JavaFX 错误 - .fxml 文件的 Nullpointer

java 将 HBox 对齐到左下角

java - 如何在Maven项目中使用ASM库

java - 如何将添加添加到我们的 Android 应用程序中

c++ - random_shuffle() 对象 vector 时出现大量错误?

JavaFX 动画 - 性能下降

java - fxml 中返回空指针的按钮