2012-11-30 46 views
1
連接SAP

能否請你告訴我的解決方案來解決這個問題,下面---異常而通過Java

此異常,而試圖通過即使sapjco3.jar是Java類連接SAP相關的文件我得到我的圖書館path.I在Windows XP &的Windows Server 98

java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682) 
at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
at java.lang.System.loadLibrary(System.java:1030) 
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:987) 
at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:948) 
at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:43) 
at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:259) 
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(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at java.lang.Class.newInstance0(Class.java:355) 
at java.lang.Class.newInstance(Class.java:308) 
at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:121) 
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:216) 
at de.vogella.sap.rfc.core.connection.Connection.<init>(Connection.java:37) 
at struct.actions.GestReservaSap.<clinit>(GestReservaSap.java:63) 
at eu.sony.com.moduloreservas.ReservasMainClass.main(ReservasMainClass.java:259) 

回答

5

SAP Java連接器內部使用本機庫連接到SAP嘗試這個。此本機庫不是sapjco3.jar,而是sapjco3.dll(在Windows系統上)。即該dll文件必須位於Java庫路徑中的文件夾中。

後者是Java系統屬性,你可以通過調用

System.getProperty("java.library.path") 

訪問它在你的應用程序然後你就可以把sapjco3.dll要麼成已經在你的庫路徑中的一個文件夾(在Windows例如像C:\ WINNT \ SYSTEM32)或其他方式設置爲特定文件夾中的庫路徑通過顯式設置庫路徑:通過前設置 System.setProperty("java.library.path", "C:\path\to\folder\with\dll\")

  • 在應用程序代碼訪問SAP JCO
  • 或用命令行參數 -Djava.library.path=C:\path\to\folder\with\dll\

啓動Java時,由於把該dll到系統中特定文件夾像WINNT \ SYSTEM32不僅可以是你的應用程序,但給他人以及影響,建議將包含sapjco3.dll的文件夾添加到應用程序的庫路徑中。更靈活的方法是通過命令行指定它,如上所示,所以你沒有硬編碼。