本帖最后由 xiakexing_long 于 2014-10-12 10:51:47 编辑

解决方案 »

  1.   

    Dx local variable type mismatch: attempt to set or access a value of type java.lang.Object using a local variable of type java.lang.Object[]. Jar信息有错吧,这里显示在进行 dx 转换的时候,本来应该访问 Object 但却是一个 Object 数组
      

  2.   

    一般而言,我们是不会主动去修改三方包得,所以你最好先单独建立一个 demo 工程,确定是否三方包得问题,不过一般来说,都不太可能是,毕竟三方包发出来之前肯定是经过他们验证了的,你是自己打包的吗?
      

  3.   

    我把ch/qos/logback/classic/gaffer/ComponentDelegate.class这个jar包里的这个文件给删了,
    这下可以顺利启动了不知道这样做会不会有什么问题
      

  4.   

    我前面有写过一个java工程来测试,这些包是可以正常使用的
    我把测试的代码加到了安卓的工程里,运行后程序奔溃了,
    logcat输出了下面的错误信息
    10-12 06:49:23.284: I/System.out(664): =======================connect start!============================
    10-12 06:49:23.384: I/System.out(664): 06:49:23.315 [main] INFO  org.openscada.opc.lib.da.Server - Socket timeout: 0 
    10-12 06:49:23.634: I/System.out(664): 06:49:23.616 [main] WARN  org.openscada.opc.lib.da.Server - Unknown error
    10-12 06:49:23.634: I/System.out(664): java.lang.ExceptionInInitializerError: null
    10-12 06:49:23.634: I/System.out(664):  at org.openscada.opc.lib.da.Server.connect(Server.java:115) ~[na:0.0]
    10-12 06:49:23.634: I/System.out(664):  at com.lz.opc.OpcClientActivity.onClick(OpcClientActivity.java:62) ~[na:0.0]
    10-12 06:49:23.634: I/System.out(664):  at android.view.View.performClick(View.java:3511) ~[na:0.0]
    10-12 06:49:23.634: I/System.out(664):  at android.view.View$PerformClick.run(View.java:14105) ~[na:0.0]
    10-12 06:49:23.634: I/System.out(664):  at android.os.Handler.handleCallback(Handler.java:605) ~[na:0.0]
    10-12 06:49:23.634: I/System.out(664):  at android.os.Handler.dispatchMessage(Handler.java:92) ~[na:0.0]
    10-12 06:49:23.634: I/System.out(664):  at android.os.Looper.loop(Looper.java:137) ~[na:0.0]
    10-12 06:49:23.634: I/System.out(664):  at android.app.ActivityThread.main(ActivityThread.java:4424) ~[na:0.0]
    10-12 06:49:23.661: I/System.out(664):  at java.lang.reflect.Method.invokeNative(Native Method) ~[na:0.0]
    10-12 06:49:23.661: I/System.out(664):  at java.lang.reflect.Method.invoke(Method.java:511) ~[na:0.0]
    10-12 06:49:23.661: I/System.out(664):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) ~[na:0.0]
    10-12 06:49:23.664: I/System.out(664):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) ~[na:0.0]
    10-12 06:49:23.664: I/System.out(664):  at dalvik.system.NativeStart.main(Native Method) ~[na:0.0]
    10-12 06:49:23.664: I/System.out(664): Caused by: android.os.NetworkOnMainThreadException: null
    10-12 06:49:23.664: I/System.out(664):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) ~[na:0.0]
    10-12 06:49:23.664: I/System.out(664):  at java.net.InetAddress.lookupHostByName(InetAddress.java:391) ~[na:0.0]
    10-12 06:49:23.664: I/System.out(664):  at java.net.InetAddress.getLocalHost(InetAddress.java:371) ~[na:0.0]
    10-12 06:49:23.664: I/System.out(664):  at org.jinterop.dcom.core.JISession.<clinit>(Unknown Source) ~[na:na]
    10-12 06:49:23.664: I/System.out(664):  ... 13 common frames omitted
    10-12 06:49:23.664: I/System.out(664): 06:49:23.670 [main] INFO  org.openscada.opc.lib.da.Server - Destroying DCOM session...
    10-12 06:49:23.674: I/System.out(664): 06:49:23.675 [main] INFO  org.openscada.opc.lib.da.Server - Destroying DCOM session... forked
    10-12 06:49:23.674: I/System.out(664): 06:49:23.681 [OPCSessionDestructor] DEBUG org.openscada.opc.lib.da.Server - Starting destruction of DCOM session
    10-12 06:49:23.693: I/System.out(664): 06:49:23.693 [OPCSessionDestructor] WARN  org.openscada.opc.lib.da.Server - Failed to destruct DCOM session
    10-12 06:49:23.693: I/System.out(664): java.lang.NoClassDefFoundError: org/jinterop/dcom/core/JISession
    10-12 06:49:23.693: I/System.out(664):  at org.openscada.opc.lib.da.Server$1.run(Server.java:171) ~[na:0.0]
    10-12 06:49:23.693: I/System.out(664):  at java.lang.Thread.run(Thread.java:856) ~[na:0.0]
    10-12 06:49:23.714: I/System.out(664): 06:49:23.712 [OPCSessionDestructor] INFO  org.openscada.opc.lib.da.Server - Session destruction took 23 ms唉。
      

  5.   

    你现在的错误不是因为jar 包出错,而是你在主线程上执行了网络操作,你应该把这种耗时操作放到异步线程中执行..至于你删除了 jar 包中的一个 class 文件,如果其内部没有调用到,不会出错,如果有调用,必然会出现 ClassNotFoundException
      

  6.   

    现在我先不考虑线程的问题,只是先测试一下,而且就算放到另外的线程里,他还是会报错啊。
    刚刚我试了用改过的包替换原来java工程里的包,还是可以正常使用的,真不知道一到安卓下怎么就这么多问题前面贴的有点多了,下面是error
    10-12 07:20:46.134: E/AndroidRuntime(684): FATAL EXCEPTION: main
    10-12 07:20:46.134: E/AndroidRuntime(684): java.lang.RuntimeException: java.lang.ExceptionInInitializerError
    10-12 07:20:46.134: E/AndroidRuntime(684):  at org.openscada.opc.lib.da.Server.connect(Server.java:149)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at com.lz.opc.OpcClientActivity.onClick(OpcClientActivity.java:62)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at android.view.View.performClick(View.java:3511)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at android.view.View$PerformClick.run(View.java:14105)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at android.os.Handler.handleCallback(Handler.java:605)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at android.os.Handler.dispatchMessage(Handler.java:92)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at android.os.Looper.loop(Looper.java:137)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at android.app.ActivityThread.main(ActivityThread.java:4424)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at java.lang.reflect.Method.invokeNative(Native Method)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at java.lang.reflect.Method.invoke(Method.java:511)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at dalvik.system.NativeStart.main(Native Method)
    10-12 07:20:46.134: E/AndroidRuntime(684): Caused by: java.lang.ExceptionInInitializerError
    10-12 07:20:46.134: E/AndroidRuntime(684):  at org.openscada.opc.lib.da.Server.connect(Server.java:115)
    10-12 07:20:46.134: E/AndroidRuntime(684):  ... 12 more
    10-12 07:20:46.134: E/AndroidRuntime(684): Caused by: android.os.NetworkOnMainThreadException
    10-12 07:20:46.134: E/AndroidRuntime(684):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at java.net.InetAddress.getLocalHost(InetAddress.java:371)
    10-12 07:20:46.134: E/AndroidRuntime(684):  at org.jinterop.dcom.core.JISession.<clinit>(Unknown Source)
    10-12 07:20:46.134: E/AndroidRuntime(684):  ... 13 more麻烦你再给我分析下
      

  7.   

     Caused by: android.os.NetworkOnMainThreadException
    在主线程调用了网络,你可以先使用if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }允许在主线程使用网络,但是不建议这么使用
      

  8.   

    按照你说的,程序不奔溃了,但是logcat的输出显示还是连接不上,不过跟这个帖子的初衷可能关系不大了
    可以私信请教吗?
      

  9.   

    私信有200字的限制
    我还是把输出贴下面好了
    10-12 08:15:39.293: I/System.out(962): =======================connect start!============================
    10-12 08:15:39.293: I/System.out(962): 08:15:39.294 [main] INFO  org.openscada.opc.lib.da.Server - Socket timeout: 0 
    10-12 08:15:39.293: I/System.out(962): 08:15:39.299 [main] INFO  org.jinterop.dcom.core.JISession - Created Session: 1649276871
    10-12 08:15:39.303: I/System.out(962): 08:15:39.310 [main] DEBUG o.j.dcom.transport.JIComTransport - Opening socket on /202.38.214.45:135
    10-12 08:15:39.354: I/System.out(962): 08:15:39.337 [main] INFO  org.openscada.opc.lib.da.Server - Failed to connect to server
    10-12 08:15:39.354: I/System.out(962): org.jinterop.dcom.common.JIException: An internal error occurred. [0x8001FFFF]
    10-12 08:15:39.354: I/System.out(962):  at org.jinterop.dcom.core.JIComServer.init(Unknown Source) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at org.jinterop.dcom.core.JIComServer.initialise(Unknown Source) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at org.jinterop.dcom.core.JIComServer.<init>(Unknown Source) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at org.openscada.opc.lib.da.Server.connect(Server.java:117) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at com.lz.opc.OpcClientActivity.onClick(OpcClientActivity.java:71) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at android.view.View.performClick(View.java:3511) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at android.view.View$PerformClick.run(View.java:14105) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at android.os.Handler.handleCallback(Handler.java:605) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at android.os.Handler.dispatchMessage(Handler.java:92) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at android.os.Looper.loop(Looper.java:137) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at android.app.ActivityThread.main(ActivityThread.java:4424) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at java.lang.reflect.Method.invokeNative(Native Method) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at java.lang.reflect.Method.invoke(Method.java:511) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at dalvik.system.NativeStart.main(Native Method) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962): Caused by: java.net.SocketException: socket failed: EACCES (Permission denied)
    10-12 08:15:39.354: I/System.out(962):  at libcore.io.IoBridge.socket(IoBridge.java:573) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at java.nio.SocketChannelImpl.<init>(SocketChannelImpl.java:102) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at java.nio.SocketChannelImpl.<init>(SocketChannelImpl.java:93) ~[na:0.0]
    10-12 08:15:39.354: I/System.out(962):  at java.nio.SelectorProviderImpl.openSocketChannel(SelectorProviderImpl.java:49) ~[na:0.0]
    10-12 08:15:39.363: I/System.out(962):  at java.nio.channels.SocketChannel.open(SocketChannel.java:81) ~[na:0.0]
    10-12 08:15:39.363: I/System.out(962):  at java.nio.channels.SocketChannel.open(SocketChannel.java:108) ~[na:0.0]
    10-12 08:15:39.363: I/System.out(962):  at org.jinterop.dcom.transport.JIComTransport.attach(Unknown Source) ~[na:0.0]
    10-12 08:15:39.363: I/System.out(962):  at rpc.Stub.attach(Unknown Source) ~[na:0.0]
    10-12 08:15:39.363: I/System.out(962):  ... 16 common frames omitted
    10-12 08:15:39.363: I/System.out(962): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
    10-12 08:15:39.363: I/System.out(962):  at libcore.io.Posix.socket(Native Method) ~[na:0.0]
    10-12 08:15:39.363: I/System.out(962):  at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181) ~[na:0.0]
    10-12 08:15:39.363: I/System.out(962):  at libcore.io.IoBridge.socket(IoBridge.java:558) ~[na:0.0]
    10-12 08:15:39.363: I/System.out(962):  ... 23 common frames omitted
    10-12 08:15:39.363: I/System.out(962): 08:15:39.370 [main] INFO  org.openscada.opc.lib.da.Server - Destroying DCOM session...
    10-12 08:15:39.373: I/System.out(962): 08:15:39.375 [main] INFO  org.openscada.opc.lib.da.Server - Destroying DCOM session... forked
    10-12 08:15:39.373: I/System.out(962): 8001FFFF: Unknown error (8001FFFF)
    10-12 08:15:39.394: I/System.out(962): 08:15:39.396 [OPCSessionDestructor] DEBUG org.openscada.opc.lib.da.Server - Starting destruction of DCOM session
    10-12 08:15:39.394: I/System.out(962): 08:15:39.398 [OPCSessionDestructor] INFO  org.jinterop.dcom.core.JISession - About to destroy 0 sessesion which are linked to this session: 1649276871
    10-12 08:15:39.443: I/System.out(962): 08:15:39.445 [OPCSessionDestructor] INFO  o.j.dcom.core.JIComOxidRuntime - destroySessionOIDs for session: 1649276871
    10-12 08:15:39.443: I/System.out(962): 08:15:39.448 [OPCSessionDestructor] INFO  org.openscada.opc.lib.da.Server - Destructed DCOM session
    10-12 08:15:39.443: I/System.out(962): 08:15:39.451 [OPCSessionDestructor] INFO  org.openscada.opc.lib.da.Server - Session destruction took 55 ms
    10-12 08:17:55.377: I/System.out(962): 08:17:55.378 [Timer-1] INFO  o.j.dcom.core.JIComOxidRuntime - Running ClientPingTimerTask !
    10-12 08:21:55.377: I/System.out(962): 08:21:55.377 [Timer-1] INFO  o.j.dcom.core.JIComOxidRuntime - Running ClientPingTimerTask !
    10-12 08:21:55.384: I/System.out(962): 08:21:55.382 [Timer-2] INFO  o.j.dcom.core.JIComOxidRuntime - Running ServerPingTimerTask !
    10-12 08:25:55.377: I/System.out(962): 08:25:55.377 [Timer-1] INFO  o.j.dcom.core.JIComOxidRuntime - Running ClientPingTimerTask !
    10-12 08:29:55.383: I/System.out(962): 08:29:55.377 [Timer-2] INFO  o.j.dcom.core.JIComOxidRuntime - Running ServerPingTimerTask !
    10-12 08:29:55.383: I/System.out(962): 08:29:55.380 [Timer-1] INFO  o.j.dcom.core.JIComOxidRuntime - Running ClientPingTimerTask !这跟安卓本身有关吗?  因为java工程运行到划线部分后,是可以发起socket通信的
      

  10.   

    Permission denied你设置了网络连接的权限没有
      

  11.   

    设置好了联网权限,不过又出现了新问题
    10-12 10:41:26.283: E/AndroidRuntime(594): FATAL EXCEPTION: main
    10-12 10:41:26.283: E/AndroidRuntime(594): java.lang.RuntimeException: java.lang.IllegalStateException: Cp850
    10-12 10:41:26.283: E/AndroidRuntime(594):  at org.openscada.opc.lib.da.Server.connect(Server.java:149)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at com.lz.opc.OpcClientActivity.onClick(OpcClientActivity.java:71)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at android.view.View.performClick(View.java:3511)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at android.view.View$PerformClick.run(View.java:14105)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at android.os.Handler.handleCallback(Handler.java:605)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at android.os.Handler.dispatchMessage(Handler.java:92)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at android.os.Looper.loop(Looper.java:137)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at android.app.ActivityThread.main(ActivityThread.java:4424)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at java.lang.reflect.Method.invokeNative(Native Method)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at java.lang.reflect.Method.invoke(Method.java:511)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at dalvik.system.NativeStart.main(Native Method)
    10-12 10:41:26.283: E/AndroidRuntime(594): Caused by: java.lang.IllegalStateException: Cp850
    10-12 10:41:26.283: E/AndroidRuntime(594):  at jcifs.ntlmssp.Type1Message.toByteArray(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at rpc.security.ntlm.NtlmConnection.outgoingRebind(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at rpc.DefaultConnection.processOutgoing(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at rpc.DefaultConnection.transmitFragment(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at rpc.DefaultConnection.transmit(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at rpc.ConnectionOrientedEndpoint.send(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at rpc.ConnectionOrientedEndpoint.connect(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at rpc.ConnectionOrientedEndpoint.bind(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at rpc.ConnectionOrientedEndpoint.rebind(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at org.jinterop.dcom.transport.JIComEndpoint.rebindEndPoint(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at org.jinterop.dcom.core.JIComServer.init(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at org.jinterop.dcom.core.JIComServer.initialise(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at org.jinterop.dcom.core.JIComServer.<init>(Unknown Source)
    10-12 10:41:26.283: E/AndroidRuntime(594):  at org.openscada.opc.lib.da.Server.connect(Server.java:117)
    10-12 10:41:26.283: E/AndroidRuntime(594):  ... 12 more
      

  12.   

    这个问题倒是蛮难判别的,看起来是点击事件之后传入的参数不对,你可以定位一下(Server.java:149行,看看是什么
      

  13.   

     catch ( final Throwable e )
            {
                logger.warn ( "Unknown error", e );
                cleanup ();
                throw new RuntimeException ( e );
            }149行就是划线部分另外logcat前面有些输出,你看看是不是出错的原因10-13 01:33:12.872: I/System.out(696): 01:33:12.873 [main] DEBUG o.j.dcom.transport.JIComTransport - Opening socket on /202.38.214.45:135
    10-13 01:33:12.892: I/org.jinterop(696):  Sending BIND
    10-13 01:33:12.902: I/System.out(696): 01:33:12.908 [main] DEBUG o.j.dcom.transport.JIComTransport - Socket closed... Socket[unconnected] host 202.38.214.45, port 135
    10-13 01:33:12.912: I/dalvikvm(696): Could not find method sun.reflect.Reflection.getCallerClass, referenced from method ch.qos.logback.classic.spi.PackagingDataCalculator.<clinit>
    10-13 01:33:12.912: W/dalvikvm(696): VFY: unable to resolve static method 9335: Lsun/reflect/Reflection;.getCallerClass (I)Ljava/lang/Class;
    10-13 01:33:12.912: D/dalvikvm(696): VFY: replacing opcode 0x71 at 0x0008
    10-13 01:33:12.922: I/dalvikvm(696): Could not find method sun.reflect.Reflection.getCallerClass, referenced from method ch.qos.logback.classic.spi.PackagingDataCalculator.populateFrames
    10-13 01:33:12.922: W/dalvikvm(696): VFY: unable to resolve static method 9335: Lsun/reflect/Reflection;.getCallerClass (I)Ljava/lang/Class;
    10-13 01:33:12.922: D/dalvikvm(696): VFY: replacing opcode 0x71 at 0x0025
    10-13 01:33:12.952: I/System.out(696): 01:33:12.939 [main] WARN  org.openscada.opc.lib.da.Server - Unknown error