经过反编译SAP的JCO3的java代码,发现:JCO3在FileDestinationsDataProvider类中强制使用当前工作路径为jcoDestination的父路径,要想任意指定路径,一个较快的解决办法就是替换掉com.sap.conn.jco.rt.FileDestinationsDataProvider.java这个类,一下是此类的加强版的java代码:
package com.sap.conn.jco.rt;
import com.sap.conn.jco.ext.*;
import com.sap.conn.jco.util.FastStringBuffer;
import java.io.*;
import java.util.Properties;
public final class FileDestinationsDataProvider implements DestinationDataProvider, ServerDataProvider {
private static String DESTINATION_FILES_SUFFIX = ".jcoDestination";
private static String SERVER_CFG_FILES_SUFFIX = ".jcoServer";
private File destinationDirectory;
FileDestinationsDataProvider(String directory) throws FileNotFoundException {
destinationDirectory = null;
/*
File destinationDirFile = null;
FastStringBuffer error = new FastStringBuffer(128);
destinationDirFile = new File(directory);
if (checkFile(destinationDirFile, error)) {
destinationDirectory = destinationDirFile;
} else {
throw new FileNotFoundException(error.toString());
}
*/
}
private boolean checkFile(File file, FastStringBuffer error) {
if (file.exists()) {
if (file.canRead()) {
return true;
}
if (error != null) {
error.append("File ");
error.append(file.getAbsolutePath());
error.append(" exists, but cannot be read. ");
}
} else
if (error != null) {
error.append("File ");
error.append(file.getAbsolutePath());
error.append(" does not exist. ");
}
return false;
}
public Properties getDestinationProperties(String destinationName) {
return loadProperties(destinationName, DESTINATION_FILES_SUFFIX);
}
public Properties getServerProperties(String serverName) {
return loadProperties(serverName, SERVER_CFG_FILES_SUFFIX);
}
private Properties loadProperties(String destinationName, String suffix) {
File destinationFile = new File(destinationDirectory,
(new StringBuilder()).append(destinationName).append(suffix).toString());
FastStringBuffer buf = new FastStringBuffer(256);
if (!checkFile(destinationFile, buf)) {
throw new RuntimeException(buf.toString());
}
FileInputStream fis = null;
Properties properties = new Properties();
try {
Properties properties1;
try {
properties.load(fis = new FileInputStream(destinationFile));
properties1 = properties;
} catch (IOException ex) {
throw new RuntimeException("Unable to load the destination properties", ex);
}
return properties1;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {}
}
}
}
public boolean supportsEvents() {
return false;
}
public void setDestinationDataEventListener(DestinationDataEventListener destinationdataeventlistener) {
}
public void setServerDataEventListener(ServerDataEventListener serverdataeventlistener) {
}
}
附件里有我打包好的经过修改的JCO3的类库文件!
分享到:
相关推荐
3. **配置so文件**:将`sapjco3.so`复制到系统的`lib`目录,例如`/usr/lib`,或者在`LD_LIBRARY_PATH`环境变量中添加该库的路径。 4. **设置权限**:可能需要调整`sapjco3.so`的权限,使其可由Java进程读取和执行。...
描述中提到的“有些技术不可用,下了三个版本才可以用”可能是指在尝试不同版本的 SAP JCo3 以找到与当前环境兼容的版本。 在集成 SAP JCo3 时,通常需要进行以下步骤: 1. **安装 JCo**: 下载并安装 SAP JCo ...
最后,libsapjco3.so是针对Linux系统的动态链接库,作用与sapjco3.dll类似,负责在Linux环境下实现Java与SAP系统的通信。在部署Java应用到Linux服务器时,需要确保该库在系统的LD_LIBRARY_PATH环境变量中,以便Java...
是因为没有找到 sapjco3.dll这个库的路径,安装了JDK的环境中,这个库默认的位置不是在system32下,而是在 JDK/JRE/BIN下面。 sapjco3 开发环境设置 1.开发中需要将sapjco3.jar加入到项目的build path中 2.或者将其...
在Windows环境中,`sapjcorfc.dll`通常与`sapjco3.dll`一起工作,为Java应用程序提供与SAP R/3系统的连接。 使用这些文件进行SAP接口调用的步骤如下: 1. **配置JCo**: 在Java项目中添加`sapjco3.jar`到类路径,...
5. **错误处理和日志记录**:JCo3提供详细的错误处理机制和日志记录功能,有助于开发者诊断和解决集成过程中的问题。 6. **安装与配置**:在部署SAP JCo3时,需要将库文件添加到Java项目类路径中,并进行相应的系统...
为了确保SAPJCO3能够在不同的操作系统上正常工作,我们需要对Windows和Linux环境进行相应的配置。本文将详细介绍在Windows和Linux环境下部署SAPJCO3的具体步骤。 #### 二、Windows环境部署 ##### 1. 引入SAPJCO3库...
1.sapjco3.dll 需要与 sapjco3.jar 在同一目录 2.设置系统环境变量,将sapjco3所在目录加入系统环境变量 例如: 新建环境变量 变量名: JAVA_SAPJCO 变量值: E:\sapjco3\sapjco3-win32 将新建的 JAVA_SAPJCO 环境...
压缩包中的"JCo3配置说明.docx"文档应详细阐述了这些步骤,并可能包含了一些特定的注意事项或解决常见问题的方法。"测试源码"文件夹包含的是示例代码或用户自定义的代码,用于测试SAP JCo3的配置是否成功。"sapjco3-...
它包含了编译后的二进制文件(如sapjco3.dll)的符号信息,帮助开发者在出现问题时进行调试。 5. Readme.txt:这是标准的文档文件,可能包含了安装指南、版本信息、使用注意事项或其他重要说明。 6. examples:这...
此外,为了调试和优化,SAP JCo3还提供了丰富的日志功能,可以通过配置`JCoContext.setLogLevel(int logLevel)`来控制日志级别,帮助开发者追踪和解决问题。 总的来说,SAP JCo3.jar是Java与SAP集成的核心组件,它...
windows环境设置1.sapjco3.dll需要与sapjco3.jar在同一目录2.设置系统环境变量,将sapjco3所在目录加入系统环境变量例如:新建环境变量变量名:JAVA_SAPJCO变量值:E:\ sapjco3 \ sapjco3- win32将新建的JAVA_SAP...
SAP JCo3(Java Connector 3)资源包是一款用于连接SAP系统的重要组件,它提供了在Java应用程序中与SAP R/3系统交互的能力。这个压缩包包含了适用于不同操作系统的版本,包括Windows 32位、Windows 64位、Linux 64位...
在Linux环境下,SAP JCo3通常需要与特定的JDK版本搭配使用,以确保兼容性和稳定性。 - **Windows**:Windows版本的SAP JCo3适应于Windows Server和桌面操作系统,如Windows 7、Windows 10等。在Windows下,安装过程...
SAP JCo2(Java Connector 2)是SAP用于连接和集成SAP应用程序与Java应用程序的一个中间件组件,而SAP JCo3(Java Connector 3)则是SAP为其Java Connector推出的下一代版本。在本文中,我们将探讨如何从SAP JCo2...
在IT行业中,SAP JCo3(Java Connector 3)是一种关键的技术,它允许Java应用程序与SAP系统进行通信和数据交互。SAP JCo3是SAP NetWeaver的一部分,提供了一种标准的接口,使得开发人员可以利用Java语言轻松地集成...