2013-08-26 12 views
6

mir ein Programm mit Java und scala gemischt erstellt, aber ich bin zu einem Fehler konfrontiert beim Versuch, eine Java-statische Methode von scala.Here zu nennen, ist der Code:keinen Zugang zu einer Java statischen Methode von scala

object GestionBasesScala { 

    def sors_tout_de_suite() { 

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

die Methode append der Abschuß Klasse ist wie folgt aus (in 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); 
      } 
     } 
    } 

} 

ich sehe nicht, was der Fehler sein könnte.

olivier

+4

Was ist die Fehlermeldung importieren? –

Antwort

3

Wenn Sie Scala IDE/Eclipse-verwenden, manchmal ist die in-Editor Compiler nicht, wenn statische Methoden werden nicht wählen erstellt und/oder aktualisiert werden.

Das Ausführen von "Clean..." auf dem Projekt macht den Fehler weg.

+1

versuchte ein "sauberes Projekt" hat mir nicht geholfen. Danke trotzdem – lolveley

+0

@lolveley: das ist eine Schande. Ich nehme an, Sie haben "Build automatisch" aktiviert? –

+1

Das funktionierte tatsächlich für mich (Scala IDE - Eclipse) – yerlilbilgin

2

application.launcher scheint nicht wie ein Klassenname, sind Sie sicher, dass es ist? Soll es nicht so etwas wie LauncherClass.append("SCALA : exit") sein?

EDIT1: Nach der Bestätigung des Klassennamens Korrektheit Ich habe versucht, ähnlich (etwas vereinfacht) Szenario, aber ich bin nicht in der Lage Verhalten in Q. funktioniert folgenden Code beschrieben zu reproduzieren (habe ich etwas verpasst?):

package javastatic 

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

    doStuff() 
} 

Die Fehlermeldung vom Compiler könnte helfen. Bitte überlegen Sie es zu posten.

+0

Hallo, das Paket ist Anwendung, der Klassenname ist Launcher, und append ist der Name der Methode, ich bin mir sicher. – lolveley

+0

Hallo, ich würde es gerne posten, aber es ist unmöglich, weil das Programm eine Bibliothek namens javaexe verwendet, die es in einen Dienst verwandelt, und deshalb bekommt es keinen Zugriff auf die Konsole (no println allowed); Ich habe versucht, die Fehlermeldung mit diesem abzufangen: – lolveley

+0

hier ist der Code: 'def sors_tout_de_suite() {try { val filewriter = new Filewriter ("Protokolle \\ zz.txt", true) val bufWriter = new BufferedWriter (filewriter) try { application.launcher.append ("SCALA") } catch { Fall e: Exception => bufWriter.append (e.getMessage()) } bufWriter.close() } catch { Fall e: IOException => {} } } ' – lolveley

1

Sie haben application.launcher._

Verwandte Themen