2012-11-22 1 views
0

한 프로젝트에서 스칼라와 Java를 사용하려고합니다. Eclipse 용 Scla IDE로 작업하고 있습니다. 내 스칼라 프로젝트에는 두개의 패키지가있다 : 하나는 스칼라 코드 용이고 다른 하나는 내 자바 코드 용 패키지이다.Eclipse : Scala는 Java 클래스 멤버에 액세스 할 수 없습니다. 정리 후 바로

이제 정적 멤버가 하나 인 새 JavaClass를 만듭니다.

package javastuff; 

public class MyJavaClass { 
    public static String MESSAGE = "Im Java"; 
} 

그 후에이 variale에 액세스하려고 시도하고 있습니다. 어떻게 든 할 수 없습니다. 재밌는 것은 scala가 자바 클래스 "MyJavaClass"를 볼 수 없기 때문이다. 메시지. 내가 프로젝트/청소 사용하는 경우

import javastuff.MyJavaClass 

object Main { 
    def main(args: Array[String]) { 
     println(MyJavaClass.MESSAGE) 
    } 
} 
  • 값 메시지가 javastuff.MyJavaClass

개체의 구성원이 아닌 ... 1-2X 배 일식 어쩌면 실현 시작되는 멤버 MESSAGE 정말 거기에 모든 것이 좋습니다. 이게 정상인가? 어쩌면 뭔가 잘못하고있는 Im, 나는 Eclipse가 정말 나쁜 IDE이고 IntelliJ를 시도해야한다고 생각하지만 어떻게 든 Eclipse를 좋아한다. 나중에 내가 좋아하는 플러그인을 사용하고 싶다. 왜 내가 IDE를 변경하지 않았을까? 이 문제. 모든 아이디어를 어떻게이 문제를 더 잘 처리 할 수 ​​있을까요?

+0

어떤 스칼라 IDE 버전을 사용하고 있습니까? –

+0

@AlexeyRomanov Scala IDE 2.1.0 Juno 용 마일스톤 (http://download.scala-ide.org/sdk/e38/scala210/dev/site/) – sabisabi

+1

누락 된 것을 알게 될 때까지이 오류가 잠시 동안 발생했습니다. 자바 클래스의 의존성; 필요한 jars를 추가 한 후, eclipse는 java 메소드를 인식하기 시작했습니다. –

답변

1

스칼라에는 정적 필드가 없습니다. 여기에 약 blogpost입니다.

btw입니다. final이없는 ​​public static은 꽤 나쁜 디자인입니다 (캡슐화 없음 = 가능한 메모리 누수)

+0

정적 멤버가 아닌 멤버에게도 똑같은 일이 일어나기 때문에 댓글에 대해 확실하지 않습니다. – sabisabi

+0

getters와 setters를 사용하여 private 멤버에 액세스합니다. public으로 설정하지 마십시오 (정적 인 경우 더 좋음) –

+0

get 이클립스가 getter 및 setter를 인식하도록하려면 이클립스를 다시 시작해야합니다. 쉬운 방법이 있습니까? – sabisabi

관련 문제