2013-08-26 129 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._