Talend:java.lang.UnsatisfiedLinkError:java.library.path中没有sapjco3

Talend:java.lang.UnsatisfiedLinkError:java.library.path中没有sapjco3,sap,talend,unsatisfiedlinkerror,Sap,Talend,Unsatisfiedlinkerror,我在Talend lib目录中有jar和dll。设置路径和类路径。我还下载并安装了VC++2005重新分发sp 1修补程序以及SAP提供的缺少的DLL。我曾尝试在windows 2003计算机和XP计算机上运行此ETL作业,结果相同。有人能帮我吗 Starting job Chargebacks at 13:57 03/10/2014. [statistics] connecting to socket on port 3350 [statistics] connected java.lang

我在Talend lib目录中有jar和dll。设置路径和类路径。我还下载并安装了VC++2005重新分发sp 1修补程序以及SAP提供的缺少的DLL。我曾尝试在windows 2003计算机和XP计算机上运行此ETL作业,结果相同。有人能帮我吗

Starting job Chargebacks at 13:57 03/10/2014.

[statistics] connecting to socket on port 3350
[statistics] connected
java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
    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:441)
    at com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:307)
    at com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:969)
    at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:955)
    at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:43)
    at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:261)
    at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:200)
    at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:73)
    at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
    at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:40)
    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.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:121)
    at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:216)
    at jdi.chargebacks_0_1.Chargebacks.tSAPConnection_1Process(Chargebacks.java:361)
    at jdi.chargebacks_0_1.Chargebacks.runJobInTOS(Chargebacks.java:3718)
    at jdi.chargebacks_0_1.Chargebacks.main(Chargebacks.java:3577)
Exception in thread "main" java.lang.ExceptionInInitializerError: Error getting the version of the native layer: java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
    at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:212)
    at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:73)
    at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
    at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:40)
    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.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:121)
    at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:216)
[statistics] disconnected
    at jdi.chargebacks_0_1.Chargebacks.tSAPConnection_1Process(Chargebacks.java:361)
    at jdi.chargebacks_0_1.Chargebacks.runJobInTOS(Chargebacks.java:3718)
    at jdi.chargebacks_0_1.Chargebacks.main(Chargebacks.java:3577)
Job Chargebacks ended at 13:57 03/10/2014. [exit code=1]
于2014年10月3日13:57开始工作扣款。
[统计信息]正在连接端口3350上的套接字
[统计]已连接
java.lang.UnsatifiedLink错误:java.library.path中没有sapjco3
位于java.lang.ClassLoader.loadLibrary(未知源)
位于java.lang.Runtime.loadLibrary0(未知源)
位于java.lang.System.loadLibrary(未知源)
位于com.sap.conn.jco.rt.DefaultJCoRuntime.loadLibrary(DefaultJCoRuntime.java:441)
在com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:307)
位于com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:969)
位于com.sap.conn.rfc.driver.CpicDriver.(CpicDriver.java:955)
位于com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:43)
位于com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:261)
位于com.sap.conn.jco.rt.MiddlewareJavaRfc(MiddlewareJavaRfc.java:200)
位于com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:73)
位于com.sap.conn.jco.rt.JCoRuntimeFactory。(JCoRuntimeFactory.java:23)
位于com.sap.conn.jco.rt.RuntimeEnvironment(RuntimeEnvironment.java:40)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于java.lang.Class.newInstance0(未知源)
位于java.lang.Class.newInstance(未知源)
位于com.sap.conn.jco.ext.Environment.getInstance(Environment.java:121)
位于com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:216)
在jdi.chargebacks\u 0\u 1.chargebacks.tSAPConnection\u 1进程(chargebacks.java:361)
在jdi.chargebacks\u 0\u 1.chargebacks.runjobinto(chargebacks.java:3718)
位于jdi.chargebacks\u 0\u 1.chargebacks.main(chargebacks.java:3577)
线程“main”java.lang.ExceptionInInitializeError中出现异常:获取本机层版本时出错:java.lang.UnsatisfiedLinkError:java.library.path中没有sapjco3
位于com.sap.conn.jco.rt.MiddlewareJavaRfc(MiddlewareJavaRfc.java:212)
位于com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:73)
位于com.sap.conn.jco.rt.JCoRuntimeFactory。(JCoRuntimeFactory.java:23)
位于com.sap.conn.jco.rt.RuntimeEnvironment(RuntimeEnvironment.java:40)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于java.lang.Class.newInstance0(未知源)
位于java.lang.Class.newInstance(未知源)
位于com.sap.conn.jco.ext.Environment.getInstance(Environment.java:121)
位于com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:216)
[统计]断开连接
在jdi.chargebacks\u 0\u 1.chargebacks.tSAPConnection\u 1进程(chargebacks.java:361)
在jdi.chargebacks\u 0\u 1.chargebacks.runjobinto(chargebacks.java:3718)
位于jdi.chargebacks\u 0\u 1.chargebacks.main(chargebacks.java:3577)
工作退单于2014年10月3日13时57分结束。[退出代码=1]

首先确保在\lib\java中有.jar文件\ 如果您在windows上,则应将dll和sapjco3.jar放置到路径 如果您在linux上,则需要将.so文件放入路径中

  • 将sapjco3.jar复制到talend lib/java文件夹中,并确保sapjco3.dll位于%PATH%(快速且不干净地将其放置在windows\system32\中)
  • 双击sapjco3.jar进行测试 它应该显示有关jar位置的信息 以及dll的位置
Talend OS和sapjco3的常见问题: 如果运行32位JAVA,则需要32位版本。
64位版本,如果你有64位java。

你能发布你的工作截图吗?谢谢你的回答。我将jar和dll添加到Talend lib\java文件夹中。我像你说的那样双击jar,在Jco库变量的路径中得到“notfound”。但是dll在同一个文件夹中。我将Talend lib\java文件夹中的路径添加到路径env中。变量,但它没有做任何更改。我们如何设置Jco LibraryOk的路径。我在另一台xp计算机上安装了Talend,并双击jar sapjco3.jar文件。我在lib\java文件夹中添加了dll和jar文件。所有的变量都设置好了,我没有收到任何错误。但是,当我运行作业时,仍然从Talend内部收到相同的错误消息。好的,在设置路径并将lib\java添加到Talend path变量后,我重新启动了计算机。这就是为什么我建议使用system32存储.dll(以及.jar,因为sap建议将这两个文件放在同一文件夹中)我很高兴您能让它工作。由于建议将该文件复制到\Windows\System32文件夹,我投了反对票。你不应该为了让你的应用程序工作而弄乱操作系统。这是一种不好的做法,SAP Connector文档中有一条说明不要将文件复制到此位置。