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

时间:2008-09-30 13:14:29

标签: java vb.net

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

(谷歌搜索发现了很多阴暗的答案,但没有确定的答案)

8 个答案:

答案 0 :(得分:4)

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

  

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

所以这不是真正的交易。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

这样的运行时桥

http://www.jnbridge.com/

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

同时检查http://www.devx.com/interop/Article/19945

答案 3 :(得分:1)

没有开箱即用。

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

答案 4 :(得分:1)

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

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

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

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

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:0)

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

java world中的这篇文章提供了一个关于如何从C ++使用Java的快速教程,反之亦然。

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

答案 7 :(得分:0)

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