One Star

UnsatisfiedLinkError: SAP component - TOS

Hello,
I am getting below error when i run the job in talend studio:
statistics] connecting to socket on port 4072
connected
java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at

i have correct dll from sap at system 32 bit folder, tried talend 32bit and 64 bit both on my 64 bit windows machine.
please suggest
19 REPLIES
Moderator

Re: UnsatisfiedLinkError: SAP component - TOS

Hi,
Which talend product build version are you using? What's your jdk version? 64bit?
Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Hi
I am trying with Talend Open Studio for ESB 5.2.3.r105372.
My windows client is using Windows 7, Service Pack 1, 64bit machine.
I am using 64bit JDK; JDK version is: 1.7.0_25
Currently, I have installed sapjco3.jar into Talend and I could see them in the installed modules. And copied sapjco3.dll into system32 folder.
I am getting below error when I run my job from Talend Open studio:
---------------------------------------------------------------------------------------------------------------------------------
Starting job sapDemo at 14:47 02/09/2013.

connecting to socket on port 3510
connected
java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 64-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.sap.conn.jco.rt.DefaultJCoRuntime.loadLibrary(DefaultJCoRuntime.java:493)
at com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:361)
at com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:1190)
at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:954)
at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:36)
at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:238)
at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:216)
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:79)
disconnected
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:155)
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:259)
at demo1.sapdemo_0_1.sapDemo.tSAPConnection_1Process(sapDemo.java:320)
at demo1.sapdemo_0_1.sapDemo.runJobInTOS(sapDemo.java:634)
at demo1.sapdemo_0_1.sapDemo.main(sapDemo.java:502)
Exception in thread "main" java.lang.ExceptionInInitializerError: Error getting the version of the native layer: java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 64-bit .dll on a AMD 64-bit platform
at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:228)
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:79)
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:155)
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:259)
at demo1.sapdemo_0_1.sapDemo.tSAPConnection_1Process(sapDemo.java:320)
at demo1.sapdemo_0_1.sapDemo.runJobInTOS(sapDemo.java:634)
at demo1.sapdemo_0_1.sapDemo.main(sapDemo.java:502)
Job sapDemo ended at 14:47 02/09/2013.
---------------------------------------------------------------------------------------------------------------------------------
Appreciate quick suggestions.
Thanks, Ram
Moderator

Re: UnsatisfiedLinkError: SAP component - TOS

Hi,
java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 64-bit .dll on a AMD 64-bit platform

It seems that sapjco3.dll file is only complied in 32 bit OS, so it can't load in 64-bit jvm platform.
Actually,jdk provide two kinds of jvm platform (32bit and 64bit),the default jvm be used in 64 OS is 64bit. If you want to load 32bit dll file in Talend Studio in 64 OS,you can add a argument ("-d32") in job configuration,if argument "-d32" is added ,job will run in 32bit jvm.(Refer to attachment).
Let me know if it is OK with you.
Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Hi
It means, i have to change the following: (assuming i am using 32 bit dll file)
1. download and Install 32 bit JDK/JVM
2. Change JVM to 32 bit JVM from Talend Studio--->Preferences-->Java-->Installed JREs-->(check) 32bit JVM
3. add an argument ("-d32") in job configuration
4. copy the dll file into "C:\Windows\SysWOW64\" folder (Edited)
I will give a try now.
Thanks, Ram
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Hi
I have executed the above mentioned steps. Below is the error message i see in Console.
-----------------------------------------------------------------
Starting job sapJobTest at 14:45 03/09/2013.

Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.
Job sapJobTest ended at 14:45 03/09/2013.
-------------------------------------------------------------------
It is very surprising to see this error. I have actually downloaded jdk-7u25-windows-i586.exe from Oracle (earlier Sun) site for windows. To my understanding x86 or i586 represents 32bit whereas x64 represents 64bit.
What could be the issue here?
.......Ram
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

When i have read the error message, i have interpreted like this:
The JVM configured is 32bit JVM -- this is what i wanted
but this is not supported by "this java instance" - which means the java instance used by Talend!!?!!
So, when i looked into Talend Studio Root directory, i found this -->TOS_ESB-win32-x86.exe -- i assume this is meant to be run in 32bit windows machine
I have run this and checked all the configuration done earlier. The argument added to job was missing. hence, added the argument (-d32) again and executed the job. Then i got this below error:
--------------------------------------------------------------------------------------------------------
Starting job sapJobTest at 15:24 03/09/2013.

connecting to socket on port 4075
connected
java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 64-bit .dll on a IA 32-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.sap.conn.jco.rt.DefaultJCoRuntime.loadLibrary(DefaultJCoRuntime.java:493)
at com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:361)
at com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:1190)
at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:954)
at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:36)
at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:238)
at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:216)
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:79)
disconnected
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:155)
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:259)
at esbdemos.sapjobtest_0_1.sapJobTest.tSAPConnection_1Process(sapJobTest.java:331)
at esbdemos.sapjobtest_0_1.sapJobTest.runJobInTOS(sapJobTest.java:1078)
at esbdemos.sapjobtest_0_1.sapJobTest.main(sapJobTest.java:946)
Exception in thread "main" java.lang.ExceptionInInitializerError: Error getting the version of the native layer: java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 64-bit .dll on a IA 32-bit platform
at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:228)
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:79)
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:155)
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:259)
at esbdemos.sapjobtest_0_1.sapJobTest.tSAPConnection_1Process(sapJobTest.java:331)
at esbdemos.sapjobtest_0_1.sapJobTest.runJobInTOS(sapJobTest.java:1078)
at esbdemos.sapjobtest_0_1.sapJobTest.main(sapJobTest.java:946)
Job sapJobTest ended at 15:24 03/09/2013.
----------------------------------------------------------------------------------
Now, this confuses me. If it is 64bit dll, it should have successfully run with the 64bit JVM and dll file from system32 folder should have worked but it did not work. Again, it is not working for 32 bit JVM also.
What could be the issue here?
........Ram
Moderator

Re: UnsatisfiedLinkError: SAP component - TOS

Hi,
So, when i looked into Talend Studio Root directory, i found this -->TOS_ESB-win32-x86.exe -- i assume this is meant to be run in 32bit windows machine
I have run this and checked all the configuration done earlier. The argument added to job was missing. hence, added the argument (-d32) again and executed the job. Then i got this below error:

TOS_ESB-win32-x86.exe is run in 32bit windows machine. But don't add the argument (-d32) again in 32 bit studio.
Check your current java version.
Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Hi
Thanks for your replies.
JVM running on my laptop is 64bit only. But I configured Talend to use 32bit JVM by selecting from installed JREs.
I have a planned travel tonight, on a customer assignment. I will start this again on Tuesday (next week) and will reply to this thread.
.......Ram
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Hi Sabrina
As you suggested I have removed the -d32 option and executed the job. Below is the error I see:
--------------------------------------------------------------------------------------------------------------------------------
Starting job wividus at 17:44 10/09/2013.

connecting to socket on port 3970
connected
java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 64-bit .dll on a IA 32-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.sap.conn.jco.rt.DefaultJCoRuntime.loadLibrary(DefaultJCoRuntime.java:493)
at com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:361)
at com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:1190)
at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:954)
at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:36)
at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:238)
at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:216)
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:79)
disconnected
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:155)
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:259)
at esbdemos.wividus_0_1.wividus.tSAPConnection_1Process(wividus.java:299)
at esbdemos.wividus_0_1.wividus.runJobInTOS(wividus.java:526)
at esbdemos.wividus_0_1.wividus.main(wividus.java:394)
Exception in thread "main" java.lang.ExceptionInInitializerError: Error getting the version of the native layer: java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 64-bit .dll on a IA 32-bit platform
at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:228)
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:79)
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:155)
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:259)
at esbdemos.wividus_0_1.wividus.tSAPConnection_1Process(wividus.java:299)
at esbdemos.wividus_0_1.wividus.runJobInTOS(wividus.java:526)
at esbdemos.wividus_0_1.wividus.main(wividus.java:394)
Job wividus ended at 17:44 10/09/2013.
--------------------------------------------------------------------------------------------------------------------------------
My configurations are:
JDK in Talend Studio (from Installed JREs) - C:\ProgramFiles\Java32Bit\JDK1.7.0_25
Copied .dll file into C:\Windows\SysWOW64
Executed "TOS_ESB-win32-x86.exe"

.....Ram
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Any updates on this issue? I'm not able to find a complete documented solution to this.
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

I could not find the actual issue and don't have solution.
I am waiting for experts comments.
Sabrina, I have seen you answering these SAP adapter queries. do you have some time to respond here?
Thanks for your time......Ram
Moderator

Re: UnsatisfiedLinkError: SAP component - TOS

Hi,
Sorry for delay.
Talend Studio does not include the SAP Java connector (JCO), it is usually delivered by your SAP provider. You can also download it from the SAP Service Marketplace at http://service.sap.com/connectors. It is better to get a 64 bit sapjco3. If you have any problems obtaining it, please contact your SAP provider.
For jco3,
1. Put sapjco3.dll in c:/windows/system32.
2. Put sapjco.jar into <Studio installation direcotry>/lib/java.
3. Restart studio.
Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Hi Sabrina
Thanks for your reply.
I have done all of them precisely. I have taken the JCO from the SAP team. DLL is placed in system32 and .jar goes to lib/java when installed from Talend.
Result was my first post in this thread. Then you said it might be 23 bit dll and suggested other ways. I have tried all of them and posted the error message I see.
Will be waiting for your suggestion..Ram
Moderator

Re: UnsatisfiedLinkError: SAP component - TOS

Hi,
Sorry for inconvenience for you.
Would you mind opening a jira bug of DI project on Talend Bug Tracker, our developer will see if it is a bug.
Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

To clarify, my issue is not with SAS, but JSPSS.dll. I get following error:
JSPSS.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
Issue was created a while back, but it was marked as "not a bug"...I'm not sure why, nor can I find a solution / workaround in the issue:
https://jira.talendforge.org/browse/TDI-25694
Employee

Re: UnsatisfiedLinkError: SAP component - TOS

Hi snvkgram,
If you got err message like this : "Error: This Java instance does not support a 32-bit JVM."
You need to check your Talend Studio : Preferences--->Talend?>Java interpreter,you should specify the directly to your 32bit JDK location.(Like this "C:\Program Files (x86)\Java\jdk1.7.0_05\bin\java.exe" is default install directory for 32bit JVM in Win7 OS).
Then it will works well.
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Hi
java.lang.UnsatisfiedLinkError: C:\Windows\System32\sapjco3.dll: Can't load IA 64-bit .dll on a AMD 64-bit platform
The above error is due to the incompatible JCo. The JCo was supplied by BASIS team and the JCo3 zip file name is "sapjco3-NTia64-3.0.10" which sounds like windows one. But it is not Smiley Sad
The correct JCo3 came with the folder name--> "sapjco30P_10-10005326"
After placing the correct jar & dll files, the adapter worked fine Smiley Happy
It is good if the displayed error message is more user friendly.
Thanks to all of you for your time and hints.
One Star

Re: UnsatisfiedLinkError: SAP component - TOS

Hi, 
Please can you help to get sapjco30P_10-10005326.zip and sapjco3.dll.

I don't have access to  the SAP Service Marketplace at .

Thank you 
Moderator

Re: UnsatisfiedLinkError: SAP component - TOS

Hi DOPAn,
Talend Studio does not include the SAP Java connector (JCO), it is usually delivered by your SAP provider. You can also download it from the SAP Service Marketplace at http://service.sap.com/connectors. If you have any problems obtaining it, please contact your SAP provider.
Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.