Eclipse로 프로젝트를 가져온 후 '슈퍼 클래스 메소드를 재정의해야합니다'오류


1250

프로젝트를 Eclipse로 다시 가져와야 할 때마다 (Eclipse를 다시 설치하거나 프로젝트 위치를 변경 한 경우) 대체 된 모든 메소드가 올바르게 형식화되지 않아 오류가 발생합니다.

이 메소드는 수퍼 클래스 메소드를 대체해야합니다.

이것이 어떤 이유로 든 Android 프로젝트에서 발생한다는 것을 언급 할 수 있습니다. 메서드 인수 값이 항상 채워지는 것은 아니므로 직접 수동으로 채워야합니다. 예를 들어 :

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});

처음에는 다음과 같이 채워집니다.

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});

이상한 점은 코드를 제거하고 Eclipse가 자동으로 메소드를 다시 작성하게하면 이미 가지고있는 것과 동일한 인수 이름을 사용하므로 문제의 위치를 ​​알 수 없습니다. 나를.

재정의 된 모든 메소드를 수동으로 수동으로 다시 작성해야하는 것은 상당히 고통스러운 일입니다. 왜 이런 일이 발생했는지 또는 어떻게 고칠 수 있는지 설명 할 수 있다면. 나는 기쁠 것이 야.

어쩌면 다른 메소드의 인수 안에있는 메소드의 형식을 지정하는 방식 때문일 수 있습니까?


1
이 항목을 확인하여 재정의 사용법을 설명합니다. 나는이 관행이 특히이 상황뿐만 아니라 모든 것에 매우 중요하다고 생각합니다. stackoverflow.com/questions/94361/…
oagostinho

답변:


1432

Eclipse는 기본적으로 Java 1.5로 설정되며 인터페이스 메소드를 구현하는 클래스가 있습니다 (Java 1.6에서는 주석을 달 수 @Override있지만 Java 1.5에서는 수퍼 클래스 메소드를 대체하는 메소드에만 적용될 수 있음).

프로젝트 / IDE 환경 설정으로 이동하여 Java 컴파일러 레벨을 1.6으로 설정하고 JRE 1.6을 선택하여 Eclipse에서 프로그램을 실행하십시오.


35
내 프로젝트는 1.6으로 설정되었으므로 별을 쏘고 1.5로 설정하고 다시 빌드 한 다음 다시 1.6으로 설정했습니다. 기적적으로 이것은 내 문제를 해결했습니다. 올바른 방향으로 나를 가리켜 주셔서 감사합니다!
Michael Krauklis

6
같은 문제를 겪고 ...이 답변에 제공된 제안을 시도했지만 여전히 성공하지 못했습니다. :( :(
aditya_gaur

6
@MichaelKrauklis 나는 1.6 이고이 문제가 있습니다. 1.5로 설정하고 정리 한 후 다시 1.6으로 설정 한 후 다시 정리했습니다. 여전히 해결되지 않았습니다. 어떤 아이디어?
Pacerier

6
내 경우에도 동일한 문제가 발생하지만 JDK 1.6을 설치하지 않았으며 최신 1.7 만 설치했지만 Android에서는 작동하지 않습니다. 이전 1.6을 설치 한 후 다음 지침을 따르면 작동합니다.)
NoBugs

4
(다른 답변에 대한 의견과 같이) 깨끗하게 빌드 한 다음 다시 시작 해야하는 경우가 종종 있습니다.
gsingh2011

308

Eclipse Galileo 를 사용하면 Eclipse- > 환경 설정 메뉴 항목으로 이동 한 다음 대화 상자에서 Java 및 컴파일러를 선택하십시오.

이제 1.6에서 컴파일러 준수 수준이 여전히 표시 될 수 있지만 여전히이 문제가 나타납니다. 이제 " 프로젝트 특정 설정 구성 ... " 링크를 선택하면 프로젝트가 1.5로 설정되어 있고 1.6으로 변경됩니다. 영향을받는 모든 프로젝트에 대해이 작업을 수행해야합니다.

이 비잔틴 메뉴 / 대화 상자 인터페이스는 Eclipse의 열악한 UI 디자인에서 일반적입니다.


78

알파 제로와 폴의 방법을 모두 시도했지만 여전히 작동하지 않은 다른 사람에게 이런 일이 발생하는 경우.

나를 위해, 프로젝트> 정리 ...를 수행 한 후에도 어떻게 든 컴파일 오류를 '캐시'했습니다.

프로젝트> 자동 빌드를 선택 취소 한 다음 프로젝트> 정리를 수행 한 다음 다시 빌드해야했습니다.

또한 의심스러운 경우 Eclipse를 다시 시작하십시오 . 이렇게하면 설명하기 어려운 많은 오류를 해결할 수 있습니다.


4
그뿐만 아니라 Clean 대화 상자에서 "빌드 자동 시작"을 선택 해제했습니다. 그때만 그것은 나를 위해 일했다.
Wilerson

3
오류를 삭제 한 후에도 일식을 다시 시작해야했습니다.
Dave Cameron

42

이 문제점을 해결하려면 프로젝트 특성-> Java 컴파일러-> 컴파일러 준수 레벨 선택 1.6-> 적용으로 이동하십시오.


22

바울의 대답은 부분적으로 나를 위해 일했습니다. 나는 여전히 하나의 오류가있었습니다. 그래서 그 외에도 Properties-> Project Facets로 이동하여 Java 버전을 1.5에서 1.6으로 설정해야했습니다.

아마 도움이 될 것입니다.


14

내 경우에는 위의 해결책 중 어느 것도 효과가 없었습니다.

프로젝트 작업 공간에서 파일을 삭제해야했습니다.

  • .계획
  • .classpath

그리고 폴더 :

  • 설정

그런 다음 이전에 작동했던 비슷한 프로젝트에서 복사했습니다. 이로 인해 깨진 프로젝트가 수정되었습니다.

물론 이전 대안을 시도하기 전에이 방법을 사용하지 마십시오!.


14

위의 방법으로도 도움이 되지 않으면 "대체 JRE"가 아닌 적절한 " 실행 환경 "이 선택되어 있는지 확인하십시오 .

아래에서 찾을 수 있습니다 :

프로젝트-> 빌드 경로-> 라이브러리

를 선택하고을 JRE System Library클릭하십시오 Edit....

"Alternate JRE ..."를 선택한 경우와 같이 "Execution Environment"로 변경하십시오 JavaSE-1.8 (jre1.8.0_60). 왜 그런지 모르겠지만 이것이 해결 될 것입니다.


2
"Execution Environment"를 선택한 다음 확인을 누르면 오류가 사라졌습니다. 그런 다음이 같은 대화 상자로 돌아와서 Eclipse에서 오류가 발생했을 때 이전에 선택한 "작업 공간 기본 JRE (...)"를 선택한 다음 확인을 누르면 오류가 발생하지 않습니까?!? 이것은 Eclipse UI 버그이거나 이와 비슷한 것이어야합니다 (
Iclipse

11

이번이 두 번째 로이 문제가 발생했습니다. alphazero의 권장 사항에 따라 처음으로 작동했습니다. 그러나 두 번째로 1.6으로 설정하면 깨끗하고 다시 빌드 한 후 'CACHE'와 같이 작동하지 않습니다.

Rollin_s가 말한 것처럼 '자동으로 빌드'를 끄십시오-> 오류가 여전히 있습니다!

그래서 패키지 탐색기에서 문제 프로젝트 (이미 1.6으로 설정)를 제거하고 다시 가져옵니다-> 재 구축을 시작하고 이번에는 오류가 없습니다.

이것이 누군가를 돕기를 바랍니다.


10

수정은 수퍼 클래스 메소드 오류를 대체해야합니다. Java 1.6에서 @Override 어노테이션을 인터페이스 메소드와 함께 사용할 수 있으므로 Java 소스 버전을 1.6으로 변경하면됩니다. 소스 버전을 1.6으로 변경하려면 다음 단계를 수행하십시오.

  1. 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭 한 후 속성
  2. Java 컴파일러를 선택하고 "프로젝트 특정 설정 사용"확인란을 선택하십시오.
  3. 이제 컴파일러 컴플라이언스 수준을 1.6으로 설정
  4. 변경 승인

10

필자의 경우 Maven 프로젝트를 Eclipse로 가져 왔을 때이 문제가 발생했습니다. 이 문제를 해결하기 위해 다음을 추가했습니다 pom.xml.

<properties>
   ...
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

그런 다음 프로젝트의 상황에 맞는 메뉴에서 "Maven-> Update Project ..."로 이동하여 OK를 누릅니다.

그게 다야. 도움이 되었기를 바랍니다.


감사합니다. 이것은 부모 pom 구성 또는 무언가를 무시합니다. (나는 다른 방법으로 문제를 광고하지만 일식에서는 문제가 없지만 maven의 컴파일러는 나를 무시해야합니다.)
Asoub

6

제 경우에는 위의 해결책이 작동하지 않습니다. 소스 코드를 다른 폴더로 체크 아웃해야합니다. 이클립스에서 파일> 작업 공간 전환> 기타 ...를 선택한 다음 코드를 새 작업 공간으로 가져 오십시오. 그 후에 작동합니다.


2

maven 프로젝트가 다른 컴파일러 준수 레벨을 사용하고 Eclipse IDE가 다른 컴파일러 준수 레벨을 사용하는 경우에 발생합니다. 이 문제를 해결하려면 Maven 프로젝트의 컴파일러 준수 수준을 IDE 사용 수준으로 변경해야합니다.

1) Eclipse IDE에서 Java 컴파일러 준수 레벨 사용을 보려면

*) 창-> 환경 설정-> 컴파일러-> 컴파일러 준수 수준 : 1.8 (또는 1.7, 1.6, ect)

2) Maven 프로젝트의 Java 컴파일러 준수 레벨을 변경하려면

*) "프로젝트"-> "속성"으로 이동-> "자바 컴파일러"선택-> 컴파일러 준수 레벨 변경 : 1.8 (또는 1.7, 1.6, 요법)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.