JCo initialization failed with java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
search cancel

JCo initialization failed with java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path

book

Article ID: 278721

calendar_today

Updated On: 02-01-2024

Products

CA Automic Workload Automation - Automation Engine

Issue/Introduction

A SAP agent is installed in a folder similar to this /ooooh/spoune/nacht0/uc4/laminch/agents/sap/bin_21.0.9+hf1/ and does not start when it is launched.

In the log we see the following 

=======================================

java.lang.ExceptionInInitializerError: JCO initialization failed with java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
    at com.sap.conn.jco.rt.Middleware.<clinit>(Middleware.java:87)
    at com.sap.conn.jco.rt.JCoRuntime.setMiddlewarePropertyValue(JCoRuntime.java:1744)
    at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:88)
    at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
    at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:41)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:167)
    at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:350)
    at com.uc4.ex.sap.UCXJR3X.afterExecutorLogon(UCXJR3X.java:180)
    at com.uc4.ex.ExecutorLifecycle.logonCompleted(ExecutorLifecycle.java:640)
    at com.uc4.ex.MessageDispatcher.lambda$consumeMessage$0(MessageDispatcher.java:408)
    at com.uc4.ex.ThreadPool$RunnableDecorator.run(ThreadPool.java:75)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

=======================================

The Java Connector log file (trc file) contains the following messages

=======================================

-------------------------------------------------------------------------------------
|                                 SAP Java Connector                                 |
|                Copyright (c) 2000-2023 SAP SE. All rights reserved.                |
|                                Version Information                                 |
--------------------------------------------------------------------------------------
Environment:
 Operating System:     Linux 3.10.0-1160.105.1.el7.x86_64 for amd64
 Java Runtime:         1.8.0_282 Red Hat, Inc.
 Java VM:              OpenJDK 64-Bit Server VM 25.282-b08
 Default charset:      UTF-8
 Default locale:       en_US
 Default time zone:    XXXX/XXX
Versions:
 JCo API:              3.1.8 (2023-07-11)
 JCo middleware:       unknown
 JCo library:          unknown
Library Paths:
 JCo archive:          /ooooh/spoune/nacht0/uc4/laminch/agents/sap/bin_21.0.9 hf1/sapjco3.jar
 JCo library:          not found
Initialization:
 JCo error:            java.lang.ExceptionInInitializerError: JCo initialization failed with java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
at com.sap.conn.jco.rt.Middleware.<clinit>(Middleware.java:87)
at com.sap.conn.jco.rt.JCoRuntime.setMiddlewarePropertyValue(JCoRuntime.java:1744)
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:88)
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
at com.sap.conn.jco.rt.About.<init>(About.java:42)
at com.sap.conn.jco.rt.About.main(About.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sap.conn.jco.About.main(About.java:41)
 
--------------------------------------------------------------------------------------
 
We can see that the path name is not the same, the '+' sign is missing.

Environment

Any SAP agent 21 on Linux/UNIX

JCO 3.1.8 or 3.1.8

Cause

This problem comes from the Java connector, because it is unable to parse a folder path correctly that has a name containing a special character here a '+'.

The JCO is unable to retrieve all his environment and libraries.

 

Resolution

Remove all special characters from the folder name in the path definition.

Here renaming the folder path as follows to /ooooh/spoune/nacht0/uc4/laminch/agents/sap/bin_21.0.9hf1/  or even simpler to /ooooh/spoune/nacht0/uc4/laminch/agents/sap/bin/ fixed the problem.