如何从C#调用Java代码?

27
我们开发了一个Java应用程序,并希望从C#客户端使用该应用程序。该应用程序依赖于Spring、Log4j等库。
如何最有效地实现这一目标 - 制作来自Java代码的DLL文件等机制?

可能是使用Java类与C#的重复问题。 - Pekka
你好,现在你有什么推荐? - Sai Ram Reddy
4个回答

30

IKVM!

这真的很棒。唯一的问题是它会给项目增加约30MB。 log4net和Spring .NET也可用,但如果要与现有代码共存,选择ikvm路线。


5
在最新版的IKVM中,JDK库被拆分成单独的组件。根据你的需求,你可能不再需要完整的30MB包大小了。JDK核心组件大约为5MB。 - Todd Stout

15

我是jni4net的作者,这是一个开源的JVM和CLR之间的跨进程桥接程序。它是建立在JNI和PInvoke之上,不需要使用C/C++代码。希望它能对你有所帮助。


1
你好,Pavel。目前 jni4net 框架在 Linux 环境下能否工作? - Sai Ram Reddy
谢谢,Pavel。你能推荐一下我可以用什么来从我的.NET Core调用Java吗?你认为C++包装器可行吗? - Sai Ram Reddy

2

OP明确要求“调用”。您指出的所有方法都涉及“发送消息”。最后一个——数据库选项则需要轮询暂存表,可能甚至更不直接。 - Pekka
将gRPC流与proto3添加到列表中。 - Vinigas

2

或者你可以在两者之间编写一个WebService/XMLRPC层。

我记得有一个叫做Grasshopper的工具,可以将您的.Net代码编译为JVM字节码。

我也听说过IKVM很不错。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接