我们已经编写了一个 Java 程序,我们希望通过 C# 使用该程序并与之交互。我们有什么选择?最佳情况下,可以将 Java 应用程序编译为库 (.DLL),我们可以使用 P/Invoke 从 C# 中引用该库。然而,根据前几次在线搜索,这似乎不是一个选项。

我们选择能够使用 ASP.NET 构建由 Java 代码支持的搜索引擎,因此如果有任何其他选项可供选择,请告诉我们。

有帮助吗?

解决方案

对不起,你 cannot 呼叫java code / classes Directly 从C#代码。

这样做的一个方法是 wrap 你java类 java Web Service 和呼类 indirectly 通过这一网服务接口在C#代码。

另一种方式是使用 javareg.exe 这暴露了java类 COM.你可以找到它在下列位置:

C:\Program Files\Microsoft VisualStudio\VIntDev98\bin\javareg.exe

以下员额可能会有所帮助

其他提示

最简单的方法很可能会发布您的Java库作为Web服务的功能,并从你的asp.net应用程序添加Web引用。

Java 并不意味着嵌入到另一个程序中,因此您需要一个桥梁。最简单的解决方案是使用套接字:创建一个 Java 进程来侦听套接字上的命令。在 C# 中,将命令发送到套接字并读取答案。

这里的主要问题是序列化,但是如果您使用 XML,那么它就不再是一个大问题了。尝试内置的 XML 序列化(看这篇文章)或自定义框架,如 流媒体 或者 简单的.

这当然是可能的Java包在一个.dll,而且一直是核心Java平台的超过10年的一部分。 JNI(Java本地接口)对你的代码中嵌入一个JVM,这意味着你可以使用C风格的联运行Java类的接口。请注意,这将要求你写一个简单的C包装,有内样本: http://java.sun.com/docs/books/jni /html/invoke.html#11202

由于一些其他职位的建议,有时是希望少紧密耦合,所以你可能要考虑使用其他的设计。一种选择是一个简单的数据库,其中的Java应用程序定期从C#代码请求调查。如果你想更紧密的耦合,对于像回调,你可以看看分布式接口。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top