4

我有一个运行 Java EE 6 的 Glassfish 3.1.1 Web 应用程序。我的一个类具有本机库依赖项。我正在使用 JNI 来使用这种本机方法。该过程的一部分涉及创建共享库 .so 文件。在我的一个 Java 类中会有一个 System.Loadlibrary("library"); 调用引用该 library.so 文件。

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

我需要调用几个 C++ 程序,这些程序可以移动到托管 Glassfish 的机器上的任何位置。我应该把它们放在 domain1/ext 文件夹中吗?将它们作为本机库添加到构建路径中的 jar 中。这是怎么做到的?

4

2 回答 2

8

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

asadmin set server.java-config.native-library-path-prefix=$NATIVE_LIBRARY_PATH

也可以通过管理控制台设置本机库位置。如果您希望灵活地移动/重命名库,可以使用符号链接。

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

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

于 2012-01-20T20:29:40.070 回答
-2

当我在基于 Windows 的服务器中使用 JNI Wrapped DLL 时,将 DLL 放在

    C:/Windows/System32

您可以尝试将 .so 放在 linux 机器上

   /usr/lib64/

试一试。

于 2012-01-20T20:21:48.517 回答