2009-07-24 81 views
13

Java代码:如何从Java调用Scala对象?

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 
+2

它应该工作精细。当你尝试时会发生什么? – skaffman 2009-07-24 18:54:15

+0

我不知道从哪里开始,从我通过google阅读的内容看起来有点复杂。该死的老职位(2008年),我很高兴Scala一直处于非常活跃的发展阶段。我用我所做的更新了我的问题。 – givanse 2009-07-24 19:33:58

回答

12

我会用java.util.Timer的开始 - 而不是javax.swing.Timer中。除非您使用GUI运行应用程序,否则摆动计时器将不起作用(即,如果您通过控制台在没有特殊命令行参数的情况下在Linux上运行它,则最好避免使用它)。

设置,旁白:

  1. 可以肯定,当你尝试运行的代码,你包括你的classpath斯卡拉 - library.jar。

  2. 不要忘了启动定时器 - timer.start()

此代码工作对我很好(无需修改Scala代码):

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