我正在开发一个 java Web 应用程序,它使用 com4j 库连接到外部数据库并从外部数据库中提取数据。我的应用程序在运行 maven/jetty 设置的本地主机上无缝运行。
但是,我需要将应用程序托管在我不是管理员的 WebLogic 服务器上。在那里部署和启动 web 应用程序时,我得到一个不满意的链接异常,如下所示。
我一直在尝试许多针对类似问题的建议解决方案,但没有任何运气。错误会不时发生轻微变化,但大体相同。我找到的所有建议解决方案都可以归结为三个建议,可在此站点上找到:https ://com4j.java.net/deployment.html
打包 jar 时它应该会自动工作: 它不会。jar 肯定在 war-file 中,而 dll 在 .jar 中,但仍然发生相同的异常。
将 com4j.dll 放在与 com4j.jar 相同的目录中: 对错误消息完全没有任何作用。
将系统属性 java.library.path 设置为包含 com4j.dll 所在的目录:错误更改为 .dll 已在另一个 ClassLoader 中加载。
我当时试过一个,一次都试过,还有以上不同的组合。
我不指望一个巫师突然俯冲下来告诉我在这里做什么,但我希望有人能帮助我找到解决这个问题的另一个角度。
<11-06-2014 15:23:34 CEST> <Error> <Deployer> <BEA-149265>
<Failure occurred in the execution of deployment request with ID
'1402493014299' for task '158'. Error is:
'weblogic.application.ModuleException: Unable to load com4j.dll'
weblogic.application.ModuleException: Unable to load com4j.dll
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1401)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:460)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
Truncated. see log file for complete stacktrace
Caused By: java.lang.UnsatisfiedLinkError: no com4j-x86 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at com4j.COM4J.loadNativeLibrary(COM4J.java:530)
at com4j.COM4J.<clinit>(COM4J.java:522)
Truncated. see log file for complete stacktrace
>