我们编写了一个 Java 程序,希望通过 C# 使用它并与之交互。我们有哪些选择?最理想的情况是,可以将 Java 应用程序编译为一个库 (.DLL),我们可以使用 P/Invoke 从 C# 引用它。但是,根据最初的几次在线搜索,这似乎不是一个选项。
我们选择能够使用 ASP.NET 来构建由 Java 代码驱动的搜索引擎,因此如果这为任何其他选项打开了大门,请告诉我们。
我们编写了一个 Java 程序,希望通过 C# 使用它并与之交互。我们有哪些选择?最理想的情况是,可以将 Java 应用程序编译为一个库 (.DLL),我们可以使用 P/Invoke 从 C# 引用它。但是,根据最初的几次在线搜索,这似乎不是一个选项。
我们选择能够使用 ASP.NET 来构建由 Java 代码驱动的搜索引擎,因此如果这为任何其他选项打开了大门,请告诉我们。
抱歉,您从 C# 代码cannot
调用 java 。code / classes
Directly
执行此操作的一种方法是wrap
在 a 中启动您的 java 类,并通过 C# 代码中的该 Web 服务接口java Web Service
调用类。indirectly
另一种方法是使用
javareg.exe
将 java 类公开为COM
. 您可以在以下位置找到它:
C:\Program Files\Microsoft VisualStudio\VIntDev98\bin\javareg.exe
以下帖子也可能有所帮助
最简单的方法可能是将您的 java 库的功能发布为 Web 服务,并从您的 asp.net 应用程序中添加一个 Web 引用。
将 Java 包装在 .dll 中当然是可能的,并且已经成为核心 Java 平台的一部分已经超过 10 年了。JNI (Java Native Interface) 有一个用于在代码中嵌入 JVM 的接口,这意味着您可以使用 C 样式链接运行 Java 类。请注意,这将需要您编写一个简单的 C 包装器,其中包含示例:http: //java.sun.com/docs/books/jni/html/invoke.html#11202
正如其他一些帖子所暗示的那样,有时希望不那么紧密地耦合,因此您可能需要考虑使用另一种设计。一种选择是简单的数据库,Java 应用程序定期轮询来自 C# 代码的请求。如果您想要更紧密的耦合,例如回调,您可以查看分布式接口。