从C#调用我自己的Java代码
拥有自己的Java代码我正在使用C#调用一些非托管代码来调用(通过JNI)java代码。 我正在使用JNI,因为我需要确保:
无论如何,我的问题是如何以最佳方式管理在这些层之间传递的字符串而不会泄漏。 我做的事情如下:
[DllImport(@"MyDll.dll")] public extern static void receive_message(string receDest, StringBuilder response);
这意味着我正在为托管代码中的响应分配内存。 我想避免这种情况,因为我事先并不知道响应长度。 如何编写一个适当的JNI方法,为托管代码分配正确的缓冲区而不会泄漏。 JNI代码应该是线程安全的。
有什么建议?
谢谢,
家伙
您可能需要JNI,但您的要求并未真正表明它。
使用真正的JVM的要求并没有规定使用JNI。 我建议提高你的要求,或考虑更松散的耦合。 例如,套接字通信,Web服务,共享数据库,共享文件或队列 。
如果您确实需要在同一个进程中运行Java和.NET,并且需要紧密耦合,请考虑使用JNBridge 。
他们已经解决了你所面临的问题。
您可能有兴趣尝试使用IKVM.NET在.NET CIL中转换Java字节码代码。
您基本上需要从.NET代码远程调用java程序。
使用您当前的技能组合,我建议您在Java机器中创建Web服务 – 这在Java 6中相对容易 – 并且基于WSDL在.NET程序中创建客户端。
这可能是当今技术最干净的解决方案。
如果由于某种原因不够好,那么请添加到您的问题中。
盖伊 – 关于切索的回应,以及你对它的回应:
披露:是的,我和JNBridge在一起。
我想你可以使用jni4net作为桥库。 或者您可以查看源代码并获取一些想法(LGPL / GPL)。
上述就是C#学习教程:从C#调用我自己的Java代码分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1025043.html