如何在Golang中使用Jar文件?

时间:2014-05-26 14:24:38

标签: jar go

是否可以在Go代码中使用jar文件类方法。如果是这样,请转发给我相同的链接。我在

中搜索过相同的内容
  

GoDoc / github.com / code.google

但是没有这样的包构建。

2 个答案:

答案 0 :(得分:22)

它"可能"只是在非常迂腐的意义上,理论上你可以在Go中编写某种JVM环境,它可以运行恰好与Go分配的内存交互的JVM字节码。

在任何实际意义上,Java(和Scala等)以完全不同的方式编译Go,并且这样做是不可行的。 Go具有自己的运行时尤其复杂,这也使得逆操作变得复杂(从Java运行Go函数)。

如果您需要与Go的Java代码进行通信,我建议您查看RPC,您可以将Java程序作为一个单独的进程启动,并通过本地网络协同调用方法。这需要一点点努力,但不是很多。它比编写框架更容易从Go真正调用Java方法。

另一个选择是使用os/exec调用Java程序,将它们输出到文件或命令行,然后读取该输出并解析它,但这比RPC更脆弱并容易出错和安全漏洞。

正如Evan在评论中提到的,您可以将JNI(Java Native Interface)与C入口点一起使用。因此,使用Cgo,您可以启动JVM并调用Java代码。 This网站似乎有一个关于如何在C和C ++中设置它的教程。我不太熟悉从这个方向使用JNI所以我不能真正推荐它,也不能阻止你使用它。 确实会在您的构建过程中引入C依赖项,因此请注意这一点。

答案 1 :(得分:0)

我有一个类似的用例。我使用kafka作为消息总线。生产者是scala,而消费者是go应用程序。这无缝地工作。最重要的是,它可以在任何分布式设置上扩展。