7

我创建了一个混合了 java 和 scala 的程序,但是在尝试从 scala 调用 java 静态方法时遇到错误。代码如下:

object GestionBasesScala {

  def sors_tout_de_suite() {

    application.launcher.append("SCALA : exit")
  }
}

启动器类的 append 方法是这样的(在 java 中):

public static void append(String text) {

    if (name_of_file != null && name_of_file != "") {
        BufferedWriter bufWriter = null;
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter(name_of_file, true);
            bufWriter = new BufferedWriter(fileWriter);
            // Ins�rer un saut de ligne
            bufWriter.newLine();
            bufWriter.write(text);
            bufWriter.close();
        } catch (IOException ex) {
              //     Logger.getLogger(TextFileWriter.class.getName()).log(Level.SEVERE,
            // null, ex);
        } finally {
            try {
                bufWriter.close();
                fileWriter.close();
            } catch (IOException ex) {
                // Logger.getLogger(TextFileWriter.class.getName()).log(Level.SEVERE,
                // null, ex);
            }
        }
    }

}

我看不出错误可能是什么。

奥利维尔

4

3 回答 3

4

如果您使用的是 Scala IDE/Eclipse,有时编辑器内编译器不会选择何时创建和/或更新静态方法。

在项目上运行"Clean..."会使错误消失。

于 2013-08-26T10:14:16.280 回答
3

application.launcher看起来不像是类名,你确定是吗?不应该是这样的LauncherClass.append("SCALA : exit")吗?

EDIT1:在确认类名正确性后,我尝试了类似(有点简化)的场景,但我无法重现 Q 中描述的行为。以下代码工作正常(我错过了什么吗?):

package javastatic

object ScalaCaller extends App {
  def doStuff() {
     javastatic.JavaProvider.append("Scala here")
  }

  doStuff()
}
package javastatic;

public class JavaProvider {
    public static void append(String text) {
        System.out.println(text);
    }
}

来自编译器的错误消息可能会有所帮助。请考虑发布它。

于 2013-08-26T10:26:16.990 回答
1

你必须导入application.launcher._

于 2014-07-30T12:17:07.433 回答