programing

"불법 한 정의 시작"을주는 Scala

procenter 2021. 1. 14. 23:21
반응형

"불법 한 정의 시작"을주는 Scala


스칼라를 시작하려고하는데 시작 게이트에서 벗어날 수 없습니다.

줄로 구성된 파일

package x

나에게 준다

오류 : 잘못된 정의 시작

x가 무엇인지, 파일을 어디에 두 었는지에 관계없이 (패키지 정의와 일치하기 위해 파일을 디렉토리 계층 구조에 배치해야한다는 이론이 있었지만 아니요). 웹 사이트의 예제 코드와 REPL에서 동일한 오류가 발생합니다.


packageScala 스크립트 ( scala명령을 사용하여 실행) 또는 REPL에서 멤버 자격 을 선언하려는 것 같습니다 .

컴파일 된 클래스와 객체만을 정의하는 파일 만 scalac패키지에 속하는 것으로 정의 할 수 있습니다.

스크립트 또는 REPL 세션에서 코드를 실행하면 실제로는 패키지 선언이 합법적이지 않은 개체의 메서드 내에서 컴파일됩니다.


Scala 2.11.0-M7부터 사용할 수 있습니다 :paste -raw(문제 SI-5299 수정 ). 이 옵션을 사용하면 REPL에서 패키지를 정의 할 수 있습니다.

scala> :paste -raw
// Entering paste mode (ctrl-D to finish)

package Foo

class Bar

// Exiting paste mode, now interpreting.


scala> import Foo._
import Foo._

scala> new Bar
res1: Foo.Bar = Foo.Bar@3ee2cf81

나는 같은 문제가 있었다. import packageName._패키지에서 워크 시트를 선언하는 대신 가져 오기로 해결했습니다 .


예를 들어 스칼라 프로그램을 실행할 때 동일한 문제가 발생했습니다. 터미널에서 "Game.scala" .

컴파일 부분은 괜찮 았고 코드를 실행할 때 오류가 표시되었습니다. 아래를 참조하십시오.

☐ 틀 렸습니다 :

user@pc:~$scala Game.scala
/home/$USER/.../src/ul/org/bloxorz/Game.scala:1: error: illegal start of definition
package ul.org.bloxorz

Scala 코드는 Java 코드와 거의 동일하게 터미널에서 호출되어야합니다 (첫 번째 예제에서했던 것처럼 파일 이름이 아닌 정규화 된 클래스 이름을 제공해야합니다).

☑ 정답 :

user@pc:~$scala ul.org.bloxorz.Game


이 오류가 발생하지 않습니다. 어떻게 컴파일하고 있습니까? 그런데 어떤 웹 사이트입니까? REPL의 경우 패키지를 허용하지 않습니다. 패키지는 컴파일 된 코드 전용입니다.

참조 URL : https://stackoverflow.com/questions/2632247/scala-giving-me-illegal-start-of-definition

반응형