I want to use SAP JCO library in my spring project to connect with sap-gateway-system for pull/push document using JCo IDoc function.
I have below configuration in my pom.xml file for SAP JCO lib, And also i want to run some test case on it.
<!-- JCO dependencies -->
<dependency>
<groupId>com.sap.conn.jco</groupId>
<artifactId>sapjco3</artifactId>
<version>${sapjco3.version}</version>
</dependency>
<dependency>
<groupId>${idoc.group.id}</groupId>
<artifactId>${idoc.artifact.id}</artifactId>
</dependency>
The library ends up being called sapjco3-3.0.jar My platform is Windows OS. When i try to run the spring project in my local, I am getting the below error :
JCo initialization failed with java.lang.ExceptionInInitializerError: Illegal JCo archive "sapjco3-3.0.jar". It is not allowed to rename or repackage the original archive "sapjco3.jar".
One possible solution for this problem was for me to rename the dependency with the maven-dependency-plugin. For the tests I removed the original maven dependency from classpath and added the renamed (now sapjco3.jar) to the classpath again.
Step-1 : My local configuration is looks like this in pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- Add the native JCO libraries to the class path -->
<classpathDependencyExcludes>
<classpathDependencyExcludes>${jco.group.id}:${jco.artifact.id}</classpathDependencyExcludes>
</classpathDependencyExcludes>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.directory}/dependency/sapjco3.jar</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
Step-2 : Add Jco libraries in build classpath as below :
Step-3 : If you have Jco maven dependency com.sap present in pom.xml then please remove it, because application will read JCO lib from build classpath.
Step-3 : Also if sapjco3-3.0.jar & sapidoc3-3.0.jar present in your maven-dependencies then please remove both jars from there as well and then try to run your project.