Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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
在Glassfish Java EE应用程序上部署JNI本机调用时放置共享库的位置_Java_Jakarta Ee_Glassfish_Java Native Interface_Native Methods - Fatal编程技术网

在Glassfish Java EE应用程序上部署JNI本机调用时放置共享库的位置

在Glassfish Java EE应用程序上部署JNI本机调用时放置共享库的位置,java,jakarta-ee,glassfish,java-native-interface,native-methods,Java,Jakarta Ee,Glassfish,Java Native Interface,Native Methods,我有一个运行JavaEE6的GlassFish3.1.1Web应用程序。我的一个类具有本机库依赖项。我正在使用JNI来使用这个本机方法。该过程的一部分涉及创建一个共享库.so文件。在我的一个Java类中,将有一个System.Loadlibrary(“库”);调用引用该library.so文件的 我的问题是,为了在Glassfish上访问和使用这个JNI功能,我应该把这个共享库以及它引用的本机代码放在哪里 我需要调用几个C++程序,这些程序可以在机器上的任何地方移动,而GLASISFISH则是在

我有一个运行JavaEE6的GlassFish3.1.1Web应用程序。我的一个类具有本机库依赖项。我正在使用JNI来使用这个本机方法。该过程的一部分涉及创建一个共享库.so文件。在我的一个Java类中,将有一个System.Loadlibrary(“库”);调用引用该library.so文件的

我的问题是,为了在Glassfish上访问和使用这个JNI功能,我应该把这个共享库以及它引用的本机代码放在哪里


我需要调用几个C++程序,这些程序可以在机器上的任何地方移动,而GLASISFISH则是在这个机器上运行的。我应该把它们放在domain1/ext文件夹中吗?将它们作为本机库添加到构建路径中的jar中。这是如何做到的?

当我在基于Windows的服务器中使用JNI包装的DLL时,请将DLL放入

    C:/Windows/System32
您可以尝试在linux计算机上放置.so

   /usr/lib64/

请尝试。

使用以下Glassfish命令设置本机库所在的路径:

asadmin set server.java-config.native-library-path-prefix=$NATIVE_LIBRARY_PATH
也可以通过管理控制台设置本机库位置。如果希望在移动/重命名库时具有灵活性,可以使用符号链接


这对于通过添加本机库有什么好处 Eclipse构建路径


JVM需要知道本机库路径。如果从Eclipse启动JVM(例如,使用本机库进行单元测试),则需要在Eclipse中配置路径。但是,如果您从Glassfish启动JVM(通过使用Eclipse Glassfish适配器),则需要配置Glassfish本身。

+1。绝对比将自己的库粘贴到系统目录要好。通过Eclipse构建路径添加本机库有什么好处?如果我转到构建路径,请选择jar。展开一个jar,我可以编辑一个叫做“本机库”的东西,它的作用是什么?它与设置asadmin server.java配置有什么不同。。。设置。如果您仍在检查此设置,这是否也适用于使项目准备部署到另一台服务器上?我假设如果我一直在服务器上的相同目录中设置文件,我可以使用相同的asadmin调用并在每台机器上设置$NATIVE_LIBRARY_路径?只要每个服务器上的本机库位于同一位置,该命令应该可以在多个Glassfish服务器上工作。您可以将asadmin命令作为生产服务器构建的一部分。@GarrettHall对于依赖于其他lib的lib,因此需要设置LD_LIBRARY_PATH,该怎么办?GF3.1.1似乎没有将LD_LIBRARY_路径设置传递给它创建的子JVM。我建议阅读此问题的公认答案: