你能在VB.net程序中使用Java库吗?

我想知道是否可以从VB.net应用程序调用Java库。

(谷歌搜索引起了很多阴暗的答案,但没有确切的答案)

不,你不能。 除非您愿意使用一些“J#”库(与Java几乎不同)或IKVM ,它是在.NET之上运行的Java实现,但正如他们的文档所述:

IKVM.OpenJDK.ClassLibrary.dll:从OpenJDK类库派生的Java类库的编译版本,其中一些部分填充了GNU Classpath和IcedTea的代码,以及一些额外的IKVM.NET特定代码。

所以这不是真正的交易。

我是jni4net的作者, jVM和CLR之间的开源内部进程桥。 它建立在JNI和PInvoke之上。 不需要C / C ++代码。 我希望它会对你有所帮助。

如果以某种forms包装Java以使其可访问,您可以从.NET调用Java,最简单的方法通常是使用像

http://www.jnbridge.com/

其他方法是使用java webservices包装您的API。

请查看http://www.devx.com/interop/Article/19945

没有任何开箱即用的东西。

我所知道的大多数java / .net互操作都使用Web服务。

如果可以使用Java创建COM组件,则可以使用tlbimp创建用于在VB.Net中使用的互操作程序集。

如果可以创建可以在C ++中使用Java的标准DLL,则可以编写P / Invoke声明并从VB.Net调用它们。

如果可以使用Java创建Web服务,则可以从WSDL生成代理类并从VB.Net调用它。

在任何情况下,Java组件都可能存在于一个单独的进程中。 我怀疑你可以在同一个进程中加载​​Java VM和CLR。

如果你有源代码并使用J#编译器编译它,那么答案是肯定的。 如果你想调用任何pre-Java 2(也就是1.2)库,那么这些库几乎是逐字包含在J#中。 最近的东西虽然很棘手(也就是说,它不存在)。

商业上使用它的一个例子是来自yWorks的yFiles图形布局算法。 这些最初只是一个Java库,但在过去的几年里,他们一直在提供.NET版本,这只是用Visual J#编译的Java版本。

这不是没有问题,而且有一些限制,你无法解决,但它可以做到。 所以…不幸的是,这个答案看起来也很阴暗。

您可以使用JNI实例化虚拟机,然后使用Java类。 不过,这会很有趣,因为你需要使用C ++作为VB.Net和Java之间的桥梁。

java世界中的这篇文章有一个关于如何使用C ++中的Java的快速教程,反之亦然。

http://www.javaworld.com/javaworld/javatips/jw-javatip17.html

如果您有源代码,Visual Studio将允许您将Java代码转换为c#。