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

你能在VB.net程序中使用Java库吗?,java,vb.net,Java,Vb.net,我想知道是否可以从VB.net应用程序调用Java库 (谷歌搜索会找到很多模糊的答案,但没有明确的答案)不,你不能。除非您愿意使用一些“J#”库(与Java不同),或者是运行在.NET之上的Java实现,但正如他们的文档所述: IKVM.OpenJDK.ClassLibrary.dll:从OpenJDK类库派生的Java类库的编译版本,其中一些部分填充了来自GNU类路径和IcedTea的代码,以及一些额外的IKVM.NET特定代码 所以这不是真正的交易。没有现成的东西 据我所知,大多数java/

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


(谷歌搜索会找到很多模糊的答案,但没有明确的答案)

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

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


所以这不是真正的交易。

没有现成的东西


据我所知,大多数java/.net互操作都使用web服务。

如果可以使用java创建COM组件,则可以使用tlbimp创建一个互操作程序集,以便在VB.net中使用

如果可以创建可以用C++与java一起使用的标准DLL,可以编写p/Unjk声明并从VB.NET ./P>调用它们。 如果可以使用Java创建web服务,那么可以从WSDL生成代理类,并从VB.Net调用它


在任何情况下,Java组件都有可能位于一个单独的进程中。我怀疑您能否在同一个过程中同时加载Java VM和CLR。

如果您有源代码并使用J#编译器编译它,那么答案是肯定的。如果您想调用任何Java 2之前的(又名1.2)库,那么这些库几乎都包含在J#中。不过,最近的东西会很棘手(也就是说,它不在那里)

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


这不是没有问题的,有一些限制,你无法绕过,但它是可以做到的。所以不幸的是,这个答案看起来也很模糊。

如果以某种形式包装Java以使其可访问,则可以从.NET调用Java,最简单的方法通常是使用运行时桥,如

另一种方法是用java Web服务包装API


选中此复选框,您可以使用JNI来实例化虚拟机,然后使用Java类。不过,这将是一个有趣的事情,因为你需要使用C++作为VB与.NET和java之间的桥梁。 世界上的这篇文章有一个关于如何使用C++和java的java的快速教程。

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

我是JVM和CLR之间的开源进程内桥梁的作者。它建立在JNI和PInvoke之上。不需要C/C++代码。我希望它能帮助您。

+1对于IKVM,我们使用它通过IKVM程序集包装的RMI存根在.NET UI和Java服务器之间进行良好的通信。事实上,只要组件不是基于AWT/Swing的,IKVM就可以很好地完成这项工作。