7

Java と scala が混在するプログラムを作成しましたが、scala から Java 静的メソッドを呼び出そうとするとエラーが発生します。コードは次のとおりです。

object GestionBasesScala {

  def sors_tout_de_suite() {

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

ランチャー クラスの追加メソッドは次のようになります (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 に答える