2013-08-26 170 views
6

到Java靜態方法不能訪問我創建了Java和Scala的混合方案,但我面對一個錯誤,而試圖調用從scala.Here 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

如果您使用的Scala IDE/Eclipse中,有時在編輯器,編譯器不挑時靜態方法成爲創建和/或更新。

對項目運行"Clean..."使錯誤消失。

+1

嘗試一個「乾淨的項目」沒有幫助我。謝謝 – lolveley

+0

@lolveley:這是一個恥辱。我假設你有「自動生成」檢查? –

+1

這確實對我有用(Scala IDE - Eclipse) – yerlilbilgin

2

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); 
    } 
} 

來自編譯器的錯誤消息可能有所幫助。請考慮發佈它。

+0

你好,包是應用程序,類名是啓動器,append是方法名,我敢肯定。 – lolveley

+0

你好,我想發佈它,但它是不可能的,因爲程序使用一個名爲javaexe的庫,它將其轉換爲服務,並且因爲它無法訪問控制檯(不允許println);我試着用這個攔截錯誤消息: – lolveley

+0

這裏是代碼: '高清sors_tout_de_suite(){ 嘗試{ VAL的FileWriter =新的FileWriter( 「日誌\\ zz.txt」,真) VAL bufWriter =新的BufferedWriter (FileWriter的) 嘗試{ application.launcher.append( 「SCALA」) }趕上{ 方案E:異常=> bufWriter.append(e.getMessage()) } bufWriter.close() }趕上{ case e:IOException => {} } }' – lolveley

1

您必須導入application.launcher._