我想知道是否可以从VB.net应用程序调用Java库。
(谷歌搜索发现了很多阴暗的答案,但没有确定的答案)
答案 0 :(得分:4)
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,最简单的方法通常是使用像
这样的运行时桥其他方法是使用java webservices包装您的API。
答案 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#。