java.lang.UnsatisfiedLinkError 在 teiid jboss 翻译器开发中从 FesApi 创建 EpcDocument 对象时出现异常
Posted
技术标签:
【中文标题】java.lang.UnsatisfiedLinkError 在 teiid jboss 翻译器开发中从 FesApi 创建 EpcDocument 对象时出现异常【英文标题】:java.lang.UnsatisfiedLinkError exception while creating EpcDocument object from FesApi with in teiid jboss translator development 【发布时间】:2020-06-15 23:02:33 【问题描述】:我在尝试使用部署在 Jboss 服务器中的 Teiid Translator 中读取 EpcDocument 中的 epc 文件时遇到此异常 java.lang.UnsatisfiedLinkError:com.f2i.energisticsStandardsApi.fesapiJNI.new_common_EpcDocument(Ljava/lang/String;)J at com.f2i.energisticsStandardsApi.fesapiJNI.new_common_EpcDocument(Native Method) 在 com.f2i.energisticsStandardsApi.common.EpcDocument.(EpcDocument.java:42)
Static
try
//Also tried this way
// System.load("D:\\fesapiEnv\\build\\fesapi\\install\\lib\\FesapiCpp.1.2.0.0.dll");
System.loadLibrary("FesapiCpp.1.2.0.0");
catch (UnsatisfiedLinkError e)
System.out.println("UnsatisfiedLinkError : " + e.toString());
public static void serializeEPC(String filePathwithName)
// This class allows an access to a memory package representing an EPC document.
EpcDocument pck = new EpcDocument(filePathwithName);
// This abstract class acts as a buffer between the RESQML (business) classes
// and the persisted data.
DataObjectRepository repo = new DataObjectRepository();
我还在 Jboss 的 bat 文件中添加了 DLL 文件(FesapiCpp.1.2.0.0.dll)加载的环境路径变量,如下所示 设置 PATH=%jBOSS_HOME%\modules\system\layers\base\com\f2i\energisticsStandardsApi\main\lib;%PATH%
我使用的 fesApi jar 是从下面的链接中编译出来的
https://github.com/F2I-Consulting/fesapi
发生的奇怪事情是,当我运行独立程序时,它运行成功,但在 Jboss 环境中它给出了上述异常。
【问题讨论】:
【参考方案1】:实际上 energisticsStandardsApi.jar 在 Wildfly 服务器中作为独立模块加载,而我在单独的模块(RESQML 的 Teiid Translator)中使用它。上面提到的静态代码块在 Translator 模块中,我在 FesapiCpp 时加载 DLL 文件。 energisticsStandardsApi 模块正在消耗 1.2.0.0.dll,因此在创建 EpcDocument 对象时会产生 java.lang.UnsatisfiedLinkError 异常。
【讨论】:
以上是关于java.lang.UnsatisfiedLinkError 在 teiid jboss 翻译器开发中从 FesApi 创建 EpcDocument 对象时出现异常的主要内容,如果未能解决你的问题,请参考以下文章