无法加载中间件层';com.sap.mw.jco.rfc.MiddlewareRFC';
我使用Sap Jco连接Sap数据库,前端为Java(JSF),连接Sap时使用:无法加载中间件层';com.sap.mw.jco.rfc.MiddlewareRFC';,sap,jco,Sap,Jco,我使用Sap Jco连接Sap数据库,前端为Java(JSF),连接Sap时使用: try { mConnection =JCO.createClient("400", // SAP client "c3026902", // userid "********", // password "EN", // language "iwdf5020", // host name "00"); // system number mConnection.connect(); } c
try {
mConnection =JCO.createClient("400", // SAP client
"c3026902", // userid
"********", // password
"EN", // language
"iwdf5020", // host name
"00"); // system number
mConnection.connect();
}
catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
}
我面临的问题是,当第一次运行应用程序时,会显示数据,但当我重新运行时,它会显示“无法加载中间件层'com.sap.mw.jco.rfc.MiddlewareRFC'”
有人能帮我解决这个问题吗????这听起来好像API无法加载本机驱动程序文件。 SAP Java Connector由一个执行实际通信的本机运行时部分和一个用Java API包装此功能的Java API组成。 Java API位于sapjco.jar中,本机驱动程序位于例如librfc32.dll和sapjcorfc.dll中的windows上。 将这些dll放入您的系统路径(例如windows:C:\windows\system32),它应该会运行 干杯
Sebastian您的DLL是否位于Windows system32文件夹中?如果是这样,您是否可能使用了错误的体系结构?(32位上的x64 DLL,反之亦然)
此外,DLL是否与JavaAPI的版本相同?如果安装了SAP GUI,可能会有较旧的DLL。定义SAP连接: 对于sapjco库的3,0版,有大量有用的信息。要创建连接,请按照中的说明进行操作: 您应该考虑以下几点: 将dll文件放在与jar相同的位置。 dll必须是适合您的操作系统和体系结构的正确版本,否则将出现本机库错误 创建到服务器的连接的代码示例
public class StepByStepClient
{
static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";
static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";
static
{
Properties connectProperties = new Properties();
connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "ls4065");
connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "85");
connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "800");
connectProperties.setProperty(DestinationDataProvider.JCO_USER, "homofarber");
connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "laska");
connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en");
createDestinationDataFile(DESTINATION_NAME1, connectProperties);
connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");
createDestinationDataFile(DESTINATION_NAME2, connectProperties);
}
static void createDestinationDataFile(String destinationName, Properties connectProperties)
{
File destCfg = new File(destinationName+".jcoDestination");
try
{
FileOutputStream fos = new FileOutputStream(destCfg, false);
connectProperties.store(fos, "for tests only !");
fos.close();
}
catch (Exception e)
{
throw new RuntimeException("Unable to create the destination files", e);
}
}
public static void step1Connect() throws JCoException
{
JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION_NAME1);
System.out.println("Attributes:");
System.out.println(destination.getAttributes());
System.out.println();
}
}
在SAPJco 3.0中,连接是根据“目的地”中包含的信息构建的
文档示例使用属性文件保存“目的地”。但是,保留连接信息是一种不安全的方式。正如文档中高亮段落所示,您可以在下一个链接中看到
如果您创建自定义“DestinationDataProvider”,则可以在数据库或任何其他存储系统上保留连接信息。在SAPJco库提供的示例中,有一个如何创建自定义DestinationDataProvider的示例。感谢您的回复Sebastian。.我已经尝试过这样做,但仍然是一样的。