我想在SCP CF上运行一个Sprint Boot组件,它使用JCO连接到后端系统。我有一个使用SCP NEO的有效解决方案,但是使用SCP CF我得到了一个运行时错误。
最初,我在SCP NEO堆栈上使用JCO创建了一个Spring Boot Java组件。这样一切都很好。在第二步中,我希望将组件迁移到SCP的Cloud Foundry堆栈。因此,a进行了必要的配置(目的地等),并将组件部署在SCP CF堆栈上。我可以通过Postman部署组件并调用REST服务,但在内部,当我尝试连接到已配置的后端目的地时,当我尝试创建JCODestination时,收到运行时错误"java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path“
似乎JCO库还没有到位。我必须在SCP CF中明确定义JCO库吗?如果是,如何做到这一点?如上所述,在SCP NEO下,我没有得到这样的错误...
public JCoDestination getJcoDestination(String target, String jcoDestinationName) {
JCoDestination jcoDestination = null;
try {
jcoDestination = JCoDestinationManager.getDestination(jcoDestinationName);
} catch (JCoException e) {
throw new RuntimeException("Unable to create/read the destination files, target="+target+",
destinationName="+jcoDestinationName, e);
}
return jcoDestination;
}错误日志显示:
java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1966)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1134)
at com.sap.conn.jco.rt.DefaultJCoRuntime.loadJCoLibrary(DefaultJCoRuntime.java:898)
at com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:467)
at com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:1554)
at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:885)
at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:36)
at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:236)
at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:214)
at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:98)
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forNameFW(Class.java:362)
at java.lang.Class.forName(Class.java:270)
at com.sap.conn.jco.JCo.createJCo(JCo.java:52)
at com.sap.conn.jco.JCo.<clinit>(JCo.java:26)
at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:104)发布于 2019-09-04 01:28:50
对于SAP Cloud Platforms (Neo + Cloud Foundry),您不能单独使用JCo,但您必须使用已经嵌入/集成的JCo版本,该版本能够通过SAP Cloud Connector进行通信。但是,用于CF环境的SAP Java buildpack附带的JCo不能用于Spring Boot应用程序:
查看列出的限制here
不能将SAP Java连接器与Spring Boot应用程序一起使用。
因此,我担心您试图实现的目标是不可能实现的。Neo云平台不存在此限制,这似乎是您在那里没有任何问题的原因。
https://stackoverflow.com/questions/57757297
复制相似问题