2012-08-23 2 views
3

스칼라를 배우기 시작했는데 그 과정의 일부로 스윙을 사용하는 간단한 스크립트를 작성하려고했습니다.스칼라 스윙 스크립트가 작동하지 않습니다.

여기 제가보고있는 문제를 보여주는 극히 일부가 삭제 된 예입니다.

SimpleSwingApp는 : 나는 스칼라 응용 프로그램으로 이클립스 스칼라 IDE를 통해 스크립트를 실행하면

import scala.swing._ 
object SimpleSwingApp extends SimpleSwingApplication { 
    def top = new MainFrame { 
    println ("Starting") 
    title = "First Swing App" 
    contents = new Button { text = "Click me" } 
    } 
} 

는 모든 것이 예상 작품으로. 예상되는 "시작"텍스트가 Eclipse 콘솔에 인쇄되고 작은 GUI가 팝업되고 클릭을 기다립니다.

명령 줄에서 스크립트로 실행하려고하면 아무 것도 얻을 수 없습니다.

> scala SimpleSwingApp.scala 

"시작"및 GUI가 없습니다.

그래서 무슨 일이 벌어지고 원하는 결과를 얻을 수 있습니까? 예 : 명령 행에서 스칼라 GUI 스크립트 시작하기. 그것없이 작동합니다, 먼저 scalac 이것을 컴파일하면

SimpleSwingApp.main(Array()) 

는, 다음 실행 명령 줄에서 실행하려면

답변

4

Scala 스크립트 러너가 스크립트 파일에서 main 메소드를 찾고 있지만 찾지 못하는 것이 문제입니다.

SimpleSwingApplication에서 main을 상속하므로 스크립트 파일에 main 메서드가 없습니다.

당신은 다음과 같이 즉시 super.main를 호출 스크립트에 대한 주요 방법을 추가하여 문제를 해결할 수 있습니다 : 이제

import scala.swing._ 
object SimpleSwingApp extends SimpleSwingApplication { 

    override def main(args: Array[String]) = super.main(args) 

    def top = new MainFrame { 
    println("Starting") 
    title = "First Swing App" 
    contents = new Button { text = "Click me" } 
    } 
} 

는 스크립트가 스칼라 IDE에서 오류가 발생하지 않으며, 그것은 오히려 당신을위한 더 적은 미적

scala -i SimpleSwingApp.scala -e "SimpleSwingApp.main(args)" 
+0

그건 의미가 있습니다. 감사! – HarryM

2

, 파일의 맨 아래에 주에 명시 적으로 호출 추가 명시 적으로 main을 호출합니다.

+0

감사보다는

scala SimpleSwingApp.scala 

를 호출하여 실행할 수 있습니다 대답. 그것은 실제로 효과가 있습니다. 불행히도 Eclipse 용 Scala IDE에서 오류가 발생합니다. IDE 오류를 해결하는 대답은 [this] (http://stackoverflow.com/a/7945379/1620605) 대답의 해결책을 찾는 것입니다. 나는 "SimpleSwingApp.main (인수)" _scala -i SimpleSwingApp.scala -e 내 스크립트를 호출하는 경우 기본적 _ 그것을 작동합니다. – HarryM

관련 문제