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了。

相关文章

#使用军哥的lnmp配置虚拟主机,需要注意的是要配置hosts文件(...
一、配置编译环境 yum update &amp;&amp; yum upgra...
一、下载repo文件 二、备份并替换系统的repo文件 三、执行yu...
LAMP -- Linux Apache MySQL PHP 在CentOS安装的顺序,我一般...
一、下载nginx安装包,官网下载中心http://nginx.org/downlo...
1.下载composer curl -sS https://getcomposer.org/installe...