0

我尝试将 ANDROID 与 SAP (RFC) 连接起来。.....那可能吗 ?我认为这是可能的,因为这个视频显示了断开连接,但我不知道为什么 jco 版本(他使用奇怪的类) https://www.youtube.com/watch?v=hJSkqS-dxkw

我正在使用 Windows 7 (x86) 和 ECLIPSE IDE。

我已将sapjco.jar添加到库项目中,

将这些文件添加到 SYSTEM32 文件夹(sapjcorfc.dlllibrfc32.dll

那是我的代码:

包 com.example.jco32;

导入android.app.Activity;进口 com.sap.mw.jco.*;导入android.os.Bundle;导入 android.view.Menu;导入android.view.MenuItem;导入android.view.View;导入 android.view.View.OnClickListener;导入android.widget.Button;
导入 android.widget.Toast;

公共类 MainActivity 扩展 Activity {

  JCO.Client client = null;
  JCO.Function funcion = null;
  JCO.Table t_spfli = null;

  IRepository repositorio = null;
  IFunctionTemplate ftemplate = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button clickButton = (Button) findViewById(R.id.button1);
    clickButton.setOnClickListener( new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    ejecutarjco();
                }

            });    

}

公共无效ejecutarjco(){

 System.out.println("i entered to hte method");
   try {
       client = JCO.createClient("100",
                                 "USER",
                                 "PASS",
                                 "EN",
                                 "/H/111.22.52.198/W/TESTING/H/172.25.10.21",
                                 "02");

     //abre la conexion
       System.out.print("BEFORE CONNECT()");
        client.connect();
        Toast.makeText(getApplicationContext(), 
                "connected", Toast.LENGTH_LONG).show();
        System.out.print("connected");


   } catch (Exception e) {
       System.out.println("Error:" +e.getMessage());
   }
}
}

不幸的是,我得到了下一个错误:

09-26 02:03:48.934: E/AndroidRuntime(670): 致命异常: main 09-26 02:03:48.934: E/AndroidRuntime(670): java.lang.ExceptionInInitializerError 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.example.jco32.MainActivity.ejecutarjco(MainActivity.java:46) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.example.jco32.MainActivity$1。 onClick(MainActivity.java:34) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.view.View.performClick(View.java:3511) 09-26 02:03:48.934: E/ AndroidRuntime(670): 在 android.view.View$PerformClick.run(View.java:14105) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.os.Handler.handleCallback(Handler.java :605) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.os.Handler.dispatchMessage(Handler.java:92) 09-26 02:03:48.934:E/AndroidRuntime(670): 在 android.os.Looper.loop(Looper.java:137) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.app.ActivityThread.main(ActivityThread.java :4424) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): 在java.lang.reflect.Method.invoke(Method.java:511) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java :784) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime (670): 在 dalvik.system.NativeStart.main(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670):137) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.app.ActivityThread.main(ActivityThread.java:4424) 09-26 02:03:48.934: E/AndroidRuntime(670): 在java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): at java.lang.reflect.Method.invoke(Method.java:511) 09-26 02 :03:48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method) 09-26 02 :03:48.934: E/AndroidRuntime(670):137) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 android.app.ActivityThread.main(ActivityThread.java:4424) 09-26 02:03:48.934: E/AndroidRuntime(670): 在java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): at java.lang.reflect.Method.invoke(Method.java:511) 09-26 02 :03:48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method) 09-26 02 :03:48.934: E/AndroidRuntime(670):48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invoke( Method.java:511) 09-26 02:03:48.934: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03: 48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 dalvik.system.NativeStart .main(本机方法)09-26 02:03:48.934:E/AndroidRuntime(670):48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 java.lang.reflect.Method.invoke( Method.java:511) 09-26 02:03:48.934: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03: 48.934: E/AndroidRuntime(670): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): 在 dalvik.system.NativeStart .main(本机方法)09-26 02:03:48.934:E/AndroidRuntime(670):android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670):android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method) 09-26 02:03:48.934: E/AndroidRuntime(670):引起:java.lang.ExceptionInInitializerError: JCO.classInitialize(): 无法加载中间件层 'com.sap.mw.jco.rfc.MiddlewareRFC' 09-26 02:03:48.934: E/AndroidRuntime(670): null 09-26 02:03:48.934: E/AndroidRuntime(670): 在 com.sap.mw.jco.JCO.(JCO.java:776) 09-26 02:03:48.934: E/AndroidRuntime(670): ... 13 更多

我希望你的帮助。问候

4

2 回答 2

1

这行不通。JCo 需要一个不适用于 Android 平台的本机库。

于 2014-09-26T07:25:22.463 回答
1

您可以编写一些通过 JCo 连接到 SAP 的 REST/SOAP webService,然后您只需将标准 HTTP 请求发送到您的 WS,然后从 SAP 获取数据并将其作为 JSON/XML 响应返回给 Android。

于 2015-07-07T06:40:11.093 回答