概要
この記事では、SAPアダプタとSAP BWアダプタを同時に使用した場合に発生する、JCo初期化エラーと解決方法を説明します。
事象の詳細
SAPアダプタとSAP BWアダプタを同時に使用した場合、以下のエラーが発生することがあります。
An internal error has occurred.
Cause: JCo initialization failed with java.lang.UnsatisfiedLinkError:
Native Library C:\Program Files\TIBCO\TDV Server 8.5\apps\common\lib\win64\sapjco3.dll
already loaded in another classloader [Log ID: 231b469b-eeb0-41dc-b103-fa20b10e9eb1]
それぞれのアダプタは正しく設定され、接続できる状態であっても、一方のアダプタで接続を行った後に、続けて他方のアダプタで接続しようとした場合などに発生することがあります。
その際、cs_server.logを詳細に確認し、SAP JCoライブラリ(com.sap.conn.jco)から以下のようなメッセージが出力されているかご確認ください。
「sapjco3.dll already loaded in another classloader」
ERROR [jetty thread pool-154] 2022-10-14 15:36:32.580 +0900 Util - User Exception Occurred
com.compositesw.common.UserException: An internal error has occurred.
Cause: JCo initialization failed with java.lang.UnsatisfiedLinkError: Native Library C:\Program Files\TIBCO\TDV Server 8.5\apps\common\lib\win64\sapjco3.dll already loaded in another classloader [Log ID: 231b469b-eeb0-41dc-b103-fa20b10e9eb1]
at com.compositesw.common.UserException$Builder.build(UserException.java:165) [cscommon.jar:?]
at com.compositesw.cdms.webapi.service.Util.createWebapiException(Util.java:87) [cswebapi-server.jar:?]
Caused by: java.lang.ExceptionInInitializerError: JCo initialization failed with java.lang.UnsatisfiedLinkError: Native Library C:\Program Files\TIBCO\TDV Server 8.5\apps\common\lib\win64\sapjco3.dll already loaded in another classloader
at com.sap.conn.jco.rt.Middleware.<clinit>(Middleware.java:87) ~[?:?]
at com.sap.conn.jco.rt.JCoRuntime.setMiddlewarePropertyValue(JCoRuntime.java:1726) ~[?:?]
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:94) ~[?:?]
このメッセージが出力されている場合、以下の解決方法をお試しください。
解決策
- 以下それぞれのアダプタのフォルダに、sapjco3.jarとsapjco3.dllの両方を配置します
<TDV install path>\apps\dlm\app_ds_sapbw\lib
<TDV install path>\apps\dlm\app_ds_sap\lib - TDVサーバーを再起動します
- エラーが回避できるようになったかご確認ください
関連情報
SAP Javaコネクターライブラリーのインストール (tibco.com)