0

启动执行“”的 Spring bean 时,vFabric tc 服务器无法加载我的 JNI 库System.loadLibrary("...")。实际上,我需要从部署在 vFabric tcServer 版 (STS) Spring Tools Suite 中的 Spring bean 中执行一些 JNI 共享库。

尽管我遵循了“为 vFabric tc Server (2030216) 自定义环境或 JVM 选项”中的建议,但仍然不断弹出错误:“ nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.JniServiceFactory]: Constructor threw exception; nested exception is java.lang.UnsatisfiedLinkError: no myJNIsharedLib in java.library.path

我进一步发现wrapper.log了 tc 服务器实例.../bin/winx86_64目录中的文件错误:Unable to open configuration file. C:\java\SpringTools\vfabric-tc-server-developer-2.9.6.RELEASE\base-instance\bin\winx86_64\wrapper.conf 并且在命令行执行包装器时还发现了错误:wrapper -q ..\..\conf\wrapper.conf, yielding wrapper | OpenSCManager failed - Access is denied. (0x5),这表明存在 UAC 问题。所以我将我的 Windows 帐户提升为管理员,甚至关闭了 UAC ......这解决了 wrapper.exe 错误,但在 tc 服务器中启动我的应用程序时没有解决 UnsatisfiedLinkError。

我还在setenv.battc 服务器实例目录下发现了一个 ' ' 文件,其中包含set JAVA_LIBRARY_PATH=邀请您定义它的行 ' ',但没有效果。我还尝试在我的系统属性下设置一个全局环境变量 JAVA_LIBRARY_PATH ,因此在启动 Spring Tools 然后启动 tc 服务器时可用......没办法。

4

1 回答 1

0

实际上,我发现的解决方案适用于 Eclipse RUN 配置。

在 Eclipse 菜单中运行 > 运行配置... > VMware vFabric 开发人员版 > 参数选项卡 > VM 参数:将额外的 -Djava.library.path=\java\git\MySharedLibRepo 添加到长列表中并重新启动 tc 服务器...这解决了这个问题。

还要确保在 MS-Windows 下加载的目标 JNI 本机库System.loadLibrary("...")具有 .dll 本机库的确切基名(因此没有 .dll 扩展名)。

实际上不需要管理员权限。普通的 Windows 用户帐户就可以了。

于 2014-08-14T22:29:34.423 回答