你如何从Java调用Scala对象?

Java代码:

import javax.swing.Timer; class Main { public static void main(String args[]) { MyListener myListener = new MyListener(); Timer timer = new Timer(1000, myListener); timer.start(); while(timer.isRunning()) { System.out.print("."); } } } 

Scala代码:

 import java.awt.event.ActionListener; import java.awt.event.ActionEvent; class MyListener extends ActionListener { override def actionPerformed(arg0: ActionEvent) { println("Do something"); } } 

命令行:

 scalac MyListener.scala javac Main.java java -cp /usr/share/java/scala-library.jar:. Main 

我首先使用java.util.Timer – 而不是javax.swing.Timer。 除非您使用GUI运行应用程序,否则swing计时器将无法工作(即,如果您通过没有特殊命令行参数的控制台在Linux上运行它,它将无法工作 – 最好避免)。

把它放在一边:

  1. 请确保,当您尝试运行代码时,在类路径中包含scala-library.jar。

  2. 别忘了启动计时器 – timer.start()

这段代码对我来说很好(Scala代码不需要修改):

 MyListener myListener = new MyListener(); Timer timer = new Timer(1000, myListener); timer.start(); Thread.sleep(10000);