jni4net - System.Runtime.Remoting.RemotingException [英] jni4net - System.Runtime.Remoting.RemotingException

查看:462
本文介绍了jni4net - System.Runtime.Remoting.RemotingException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用Java / .NET的桥梁与服务器进行通信。这座桥建成 jni4net 并似乎工作(到目前为止)。

 公共静态无效的主要(字串[] args){
    文件sibDll =新的文件(SibKernel.Client.j4n.dll);

    Bridge.setVerbose(真正的);
    Bridge.setClrVersion(V20);

    尝试 {
      Bridge.init();

      Bridge.LoadAndRegisterAssemblyFrom(sibDll);

    }赶上(IOException异常E){
      e.printStackTrace();
    }

    如果(SibKernelHelper.isConfigured()== FALSE){
      SibKernelHelper.Configure();
    }

    IMasterBoardManager mstrBoardMngr = SibKernelHelper.GetMasterBoardManager();
  }
 

我真的没有任何想法是什么问题可以。有没有人有使用的experiance这样的问题?

下面是完整的异常堆栈跟踪:

 在线程异常主要System.Runtime.Remoting.RemotingException:无法加载类型net.sf.jni4net.jni.IJvmProxy,jni4net.n-0.8.6.0版本= 0.8.6.0,文化=中性公钥= 134a23405600bab4。

服务器堆栈跟踪:
   在System.Runtime.Remoting.Messaging.MethodCall.ResolveMethod(布尔bThrowIfNotResolved)
   在System.Runtime.Remoting.Messaging.MethodCall..ctor(对象handlerObject,BinaryMethodCallMessage smuggledMsg)
   在System.Runtime.Serialization.Formatters.Binary.BinaryMethodCall.ReadArray(Object []对象马蹄莲,对象handlerObject)
   在System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler处理器,__BinaryParser serParser,布尔FCHECK,布尔isCrossAppDomain,IMet​​hodCallMessage methodCallMessage)
   在System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流serializationStream,HeaderHandler处理器,布尔FCHECK,布尔isCrossAppDomain,IMet​​hodCallMessage methodCallMessage)
   在System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryRequestMessage(字符串objectUri,流的InputStream,布尔bStrictBinding,TypeFilterLevel securityLevel进行)
   在System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack,即时聊天requestMsg,ITransportHeaders requestHeaders,流requestStream,即时聊天和放大器; responseMsg,ITransportHeaders和放大器; responseHeaders响应,流&安培; responseStream)

异常重新抛出的[0]
   在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天reqMsg,即时聊天retMsg)
   在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培; MSGDATA,的Int32型)
   在net.sf.jni4net.jni.IJvmProxy.get_JvmHandle()
   在net.sf.jni4net.utils.Convertor.FullC2J [TBoth](JNIEnv的ENV,TBoth OBJ)
   在SibKernel.Client .__ SibKernelHelper.GetMasterBoardManager6(IntPtr的__envp,JniLocalHandle __CLASS)
    在sibkernel.client.SibKernelHelper.GetMasterBoardManager(本机方法)
    在client.SIBClient.main(SIBClient.java:28)
 

解决方案

这似乎您试图实例化某些类型的遗传或依赖jni4net,但问题发生在你的.NET远程的另一面。 也许你正在传递的Java对象的实例作为远程调用的参数。

I am trying to use a Java / .NET bridge to communicate with a server. The bridge was built with jni4net and seem to work (so far).

  public static void main(String[] args) {
    File sibDll = new File("SibKernel.Client.j4n.dll");

    Bridge.setVerbose(true);
    Bridge.setClrVersion("v20");    

    try {
      Bridge.init();

      Bridge.LoadAndRegisterAssemblyFrom(sibDll);

    } catch (IOException e) {
      e.printStackTrace();
    }

    if (SibKernelHelper.isConfigured() == false) {
      SibKernelHelper.Configure();
    }

    IMasterBoardManager mstrBoardMngr = SibKernelHelper.GetMasterBoardManager();
  }

I really don't have any idea what the problem could be. Does anyone have experiance with a problem like this?

Here is the full exception stack trace:

Exception in thread "main" System.Runtime.Remoting.RemotingException: Cannot load type 'net.sf.jni4net.jni.IJvmProxy, jni4net.n-0.8.6.0, Version=0.8.6.0, Culture=neutral, PublicKeyToken=134a23405600bab4'.

Server stack trace: 
   at System.Runtime.Remoting.Messaging.MethodCall.ResolveMethod(Boolean bThrowIfNotResolved)
   at System.Runtime.Remoting.Messaging.MethodCall..ctor(Object handlerObject, BinaryMethodCallMessage smuggledMsg)
   at System.Runtime.Serialization.Formatters.Binary.BinaryMethodCall.ReadArray(Object[] callA, Object handlerObject)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryRequestMessage(String objectUri, Stream inputStream, Boolean bStrictBinding, TypeFilterLevel securityLevel)
   at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at net.sf.jni4net.jni.IJvmProxy.get_JvmHandle()
   at net.sf.jni4net.utils.Convertor.FullC2J[TBoth](JNIEnv env, TBoth obj)
   at SibKernel.Client.__SibKernelHelper.GetMasterBoardManager6(IntPtr __envp, JniLocalHandle __class)
    at sibkernel.client.SibKernelHelper.GetMasterBoardManager(Native Method)
    at client.SIBClient.main(SIBClient.java:28)

解决方案

It seems you are trying to instantiate some type inherited or dependent on jni4net, but the problem happens on the other side of your .NET remoting. Probably you are passing instance of Java object as argument of the remoting call.

这篇关于jni4net - System.Runtime.Remoting.RemotingException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆