Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JNI的NetBeans库 我可以定义一个在NetBeans中使用JNI的库吗?_Netbeans_Java Native Interface - Fatal编程技术网

使用JNI的NetBeans库 我可以定义一个在NetBeans中使用JNI的库吗?

使用JNI的NetBeans库 我可以定义一个在NetBeans中使用JNI的库吗?,netbeans,java-native-interface,Netbeans,Java Native Interface,库定义似乎只允许JAR或文件夹 如何确保在构建应用程序时DLL遵循jar文件?假设您指的是构建NetBeans平台应用程序(或模块),那么您可以将DLL放在“release/modules/lib/”文件夹中。这是根据平台常见问题解答: 其他信息如下: 如果你问的是更一般的问题,那么我认为大多数人会将DLL打包到jar中,然后在应用程序启动时将其解压缩到临时位置。e、 g 如果这不是你想要的,那么你需要提供更多关于你想要做什么的信息。netbeans不会自己做,但是因为它在幕后

库定义似乎只允许JAR或文件夹


如何确保在构建应用程序时DLL遵循jar文件?

假设您指的是构建NetBeans平台应用程序(或模块),那么您可以将DLL放在“release/modules/lib/”文件夹中。这是根据平台常见问题解答:

其他信息如下:

如果你问的是更一般的问题,那么我认为大多数人会将DLL打包到jar中,然后在应用程序启动时将其解压缩到临时位置。e、 g


如果这不是你想要的,那么你需要提供更多关于你想要做什么的信息。

netbeans不会自己做,但是因为它在幕后使用ant,所以有一个解决方法

您应该在项目目录中创建一个名为
jni
的子目录(
c:\path\to\mynetbeansproject\jni
),将所有.dll、.so和.jnilib文件放在其中(本机文件),并将以下行添加到项目目录中的
build.xml
文件中,就在
标记之前:

<target name="-post-compile">
    <copy todir="${dist.dir}/lib">
        <fileset dir="jni" />
    </copy>
</target>

然后像往常一样将jar文件添加到项目中。:)

插入
build.xml
中的代码片段将确保当您从netbeans(或从命令行调用
ant
中的“Clean and build”时,本机库遵循
dist/lib
文件夹中的jar文件;jvm将在与加载它们的.jar相同的目录中查找.dll(.so、.jnilib)文件,因此它将工作


请注意,这不会使您的项目从netbeans中运行,因为…我不确定发生了什么,但它看起来像库路径(
LD_library_path
)不包括您的项目的库,而且我不知道如何从netbeans中更改它。只需将您的本机库放在mac os x上的
/Library/Java/Extensions
中,或将它们存放在windows下的
c:\windows\system32
中即可。如果您运行的是64位windows和64位jvm,我不知道;如果您正在运行linux,您可能知道将它们存放在何处,但
/usr/lib/java
可能是一个不错的选择。

我在使用NetBeans 7.0.1时测试了以下解决方案,该解决方案有效,但我不知道它在早期版本中是否也有效

该解决方案很简单,每个NetBeans模块都可以使用。因此,如果您有一个套件,不要将它的JNI文件放入套件项目,而是将您想要的JNI文件放入模块本身。做:

  • 找到一个您想要(或需要,或认为)放置JNI库的NetBeans模块项目(例如,它们带有扩展名.DLL、.so和.jnilib)
  • 在项目中,右键单击模块节点,单击属性菜单
  • 在“项目属性”对话框中,单击库和包装的jar。您必须在那里添加任何外部库。我添加了RxTX jar库。添加外部库后,Netbeans Ant脚本将在您构建解决方案时,从您的\u project\u dir/release目录将所有文件/文件夹复制到正确的位置
  • 因此,将您的本机库放在您的项目目录/release/lib中。如果需要,可以为您需要的每个目标平台创建子目录,如:your_project_dir/release/lib/amd64、your_project_dir/release/lib/sparc32

    要了解更多信息,请阅读:

    问候,, marciowb.info


  • 不,特别是指定义可以添加到项目中的库。其中关于在jar中打包dll的要点很有趣。