微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Centos 部署 java sap 环境 sapjco2.1.8

最先进项目需要跟SAP进行交互,从windos 环境切到正式环境出现很多问题简单介绍下解决方法,不正确的地方还望大家指正

一、确认jar包

1、用于环境变量的jco for linux:

libsapjcorfc.so、libsapjcorfc.so、sapjco.jar(应用程序用的相同)
libstdc++-libc6.2-2.so.3(这个具体根据环境而定、其中一台机器可以另外一台机器必须要用64位的libstdc++.so.5)

2、用于应用程序的sapjco-ntintel-2.1.8:

librfc32.dll、sapjcorfc.dll、sapjco.jar(同上)

SAP依赖的环境包要求很严格不管是区分系统是32位64位、区分jco的版本号,因此需要两个地方的版本保持一致:
1、系统环境变量2、程序应用的DLL
在茫茫资源中,确保这些保持统一确实很困难。(可以从我的资源中下载)

二、安装环境:

1)Centos6.5 64位
2)JDK 1.7 64位
3)TOMCAT7.0

三、java连sap步骤:

1)下载sapjco.jar
请到service.sap.com/connectors,下载sapjco.jar,本案下载的是sapjco-linuxintel-2.1.8.zip

2)将sapojco文件添加到环境变量中
解压zip文件,将其中librfccm.so、libsapjcorfc.so两个文件,拷贝复制到
JDK的安装目录中$JAVA_HOME/jre/lib/i386/server,我的是在/usr/local/java/jdk1.7.0_79/jre/lib/amd64/server
可能根据cpu或者是jdk的不同有的是i386有的是amd64
同时并将sapjco.jar复制到特定目录下,然后设置CLAsspATH变量即可。

3)在进行sap rfc连接的时候,需要libstdc++-libc6.2-2.so.3库文件
可从csdn上下载,http://download.csdn.net/source/648150,
将libstdc++-libc6.2-2.so.3库文件复制到librfccm.so、libsapjcorfc.so文件所在的目录即可;
这个根据系统环境不同依赖的libstdc++版本不一样,同样的ibrfccm.so、libsapjcorfc.so在另外一台电脑上必须依赖
libstdc++.so.5,提示

Co error: java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [/usr/local/java/jdk1.7.0_79/jre/lib/amd64/server/libsapjcorfc.so: libstdc++.so.5: 无法打开共享对象文件: 没有那个文件或目录].
java.library.path [/usr/local/java/jdk1.7.0_79/jre/lib/amd64/server:/usr/local/java/jdk1.7.0_79/jre/lib/amd64:/usr/local/java/jdk1.7.0_79/jre/../lib/amd64::/usr/local/java/jdk1.7.0_79/jre/lib/amd64/server:/usr/java



一开始以为是没有安装libstdc++ 重新装了遍libstdc++.so.5还是不好使,将安装的libstdc++.so.5拷贝到libstdc++-libc6.2-2.so.3目录下提示

JCo error: java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [/usr/local/java/jdk1.7.0_79/jre/lib/amd64/server/libsapjcorfc.so: libstdc++.so.5: 错误 ELF 类: ELFCLASS32]. java.library.path [/usr/local/java/jdk1.7.0_79/jre/lib/amd64/server:/usr/local/java/jdk1.7.0_79/jre/lib/amd64:/usr/local/java/jdk1.7.0_79/jre/../lib/amd64::/usr/local/java/jdk1.7.0_79/jre/lib/amd64/server:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
at com.sap.mw.jco.JCO.<clinit>(JCO.java:871)
at com.sap.mw.jco.About.<init>(About.java:49)
at com.sap.mw.jco.About.main(About.java:110)

网上一查刚才放到目录下的libstdc++.so.5是/usr/lib/内32位版本,
到本地usr/lib64目录下 执行 ls libstdc++* 有个 6的版本比5的高,将libstdc++.so.6拷贝到目录下问题依旧
最后从别的机器上 /usr/lib64/下找了个libstdc++.so.5 64位版本,好了!!!!


四、以下是环境变量的几个设置:


vim /etc/profile
在末尾加上ibrfccm.so、libsapjcorfc.so加入到LD_LIBRARY_PATH、sapjco.jar加入到CLAsspATH中

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/java/jdk1.7.0_79/jre/lib/amd64/server
export CLAsspATH=$CLAsspATH:/usr/local/java/jdk1.7.0_79/lib/sapjco.jar

保存并发布source /etc/profile(一定要执行)

设置完成后执行:java -jar /usr/local/java/jdk1.7.0_79/lib/sapjco.jar 查看是否成功
若不报错说明成功!




最后将librfc32.dll、sapjcorfc.dll、sapjco.jar导入到部署程序的WEB-IND/lib下,
以防万一把sapjco.jar也放到tomcat 的 lib中,OK,此时在查看应用是否可以正常调用SAP了。

原文地址:https://www.jb51.cc/centos/381944.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。