从python到Py4j使用来自scala项目的jar

时间:2016-09-29 19:16:51

标签: java python scala jar py4j

我已经从我的Scala项目中构建了一个jar。

对于我想从这个jar中使用的内容,我有以下结构

package aaa.bbb.ccc    

case class FooResult(...)

trait Foo(...) {
  def bar(): FooResult
}

object Foo {
  private class FooImpl(...) extends Foo {
    ...
  }

  def apply(...): Foo
}

第一个问题:也许我误解了Py4J提供的东西, 但如果我想使用自己的类,我是否必须编写一个java / scala类来启动Py4J网关?或者它是否足以将其添加到网关的jvm的类路径?

第二个问题(我猜不适用于上面的答案):如何在启动java网关时添加我的jar以使其可用?暂时解决这个问题,我只是用我的jar和Py4J jar用这个命令手动启动了jvm

java -classpath "path/to/py4j.jar:path/to/my.jar" py4j.GatewayServer 0

然后从Python代码手动连接到它。然后我尝试通过

导入我的课程
java_import(gateway.jvm, "aaa.bbb.ccc.*")

没有抛出任何错误,但我不确定它是否有效,因为如果我输入一些假类路径它不会引发任何错误。

第三个问题(如果第一个问题的答案是我必须编写访问我的类的入口点,则适用):使用scala时这是如何工作的?

object Main extends App {
  val gw = new GatewayServer(// TODO: how to expose my classes here?
}

0 个答案:

没有答案