programing

Eclipse 오류: 필요한 .class 파일에서 간접적으로 참조됩니까?

goodsources 2023. 5. 31. 15:51
반응형

Eclipse 오류: 필요한 .class 파일에서 간접적으로 참조됩니까?

이클립스에서 오류가 발생했습니다.이 오류 메시지의 의미:

iglu.ir 을 입력합니다.TermVector를 확인할 수 없습니다.필수 .class 파일에서 간접적으로 참조됩니다.

즉, "사용하는 클래스에는 클래스 경로에 없는 다른 클래스가 필요합니다."필요한 병을 클래스 경로에 추가해야 합니다(Harry Joy 제안).

이것은 실제 오류이기 때문에 이클립스가 혼동할 가능성이 높습니다.오류를 무시하고 엔드포인트가 있는 웹 서비스를 실행했습니다.인터페이스에 대한 불만이 제기되었고, 실행할 때마다 대화상자를 처리해야 하는 것을 제외하고는 문제없이 실행되었습니다.또 하나의 불투명한 오류로 인해 아무것도 알 수 없습니다.

가끔은 "mvn eclipse:clean" 명령을 사용하여 이전 속성을 정리한 다음 mvn eclipse:clean을 실행합니다(물론 웹 프로젝트의 경우).오래된 속성이 저장되어 있어 이클립스가 혼동되기도 있습니다.

손상된 로컬 메이븐 리포지토리 때문에 이 오류가 발생했습니다.

그래서 문제를 해결하기 위해, 제가 해야 할 일은 제 저장소에 가서 관련된 .jar가 있는 폴더를 삭제한 다음 강제로update maven이클립스에서

이 문제는 3.0에서 해결된 알려진 문제(Bug 67414)인 것 같습니다. 누군가 3.4에서도 해결되고 있다고 언급했습니다.

그 동안 해결 방법은 JRE 시스템 라이브러리를 프로젝트에서 제거한 다음 다시 추가하는 것입니다.다음은 단계입니다.

  • 빌드 오류가 있는 프로젝트 속성으로 이동합니다(오른쪽 클릭 > 속성).

  • "빌드 경로" 섹션에서 "라이브러리" 탭 보기

  • 목록에서 "JRE 시스템 라이브러리"를 찾습니다(이 오류 메시지가 누락된 경우 이 오류 메시지는 이클립스 버그가 아니라 잘못 구성된 프로젝트입니다).

  • "JRE 시스템 라이브러리"를 제거

  • "Add Library..."를 누릅니다. "JRE System Library"를 선택하고 프로젝트에 적합한 JRE를 추가합니다(예: 'Workspace default JRE').

  • 라이브러리 선택에서 "마침"을 누르고 프로젝트 속성에서 "확인"을 누른 다음 프로젝트가 다시 빌드될 때까지 기다립니다.

오류가 해결되기를 바랍니다...

이 오류는 jar 파일의 클래스가 jar의 폴더 구조와 동일한 구조를 따르지 않을 때 발생합니다.

예를 들어 클래스 파일에 package com.test.exam이 있고 이 클래스 파일에서 생성된 classes.jar에 structure test.exam...이 있습니다.오류가 발생합니다.class.jar의 패키지 구조를 수정한 다음 이클립스 빌드 경로에 포함해야 합니다.

나를 위해 그것을 고친 것은.right clicking on project > Maven > Update Project

이클립스가 다른 버전의 jdk에서 작동하고 있어서 이 예외를 얻었습니다. 정확하고 깨끗하고 빌드하여 작동했습니다!

Eclipse 4.4.2에서 이 문제에 대한 흥미로운 사례가 있었습니다.내 프로젝트(P1)가 이름은 같지만 인수 유형이 다른 두 메서드를 가진 외부 클래스(프로젝트 P2)를 참조했습니다.

public static void setItem(Integer id) …
public static void setItem(Item item) …

Item세 번째 프로젝트 P3에 포함되어 있었는데, 여기서 보이고 싶지 않았습니다.P1은 첫 번째 메서드만 호출했습니다.

ExternalClass.setItem(Integer.valueOf(12345));

그래서 두 번째 방법은, 그것을 사용했습니다.Item클래스는 사용되지 않았으며, P3가 컴파일 클래스 경로에 없었던 것은 사실입니다. 사용되지 않는다면 P3가 사용되어야 합니다.

여전히 이클립스가 말해줬어요

The type ...Item cannot be resolved.
It is indirectly referenced from required .class files

명령줄에서 컴파일해도 이러한 문제가 발생하지 않았습니다.두 번째 방법의 이름을 변경하는 것은 (여기서는 사용되지 않습니다!) 이클립스에서도 문제가 사라졌습니다.

그래도 설정에 문제가 없으면 Project -> 작업영역의 모든 프로젝트를 정리하고 정리할 수 있습니다.

편집: 죄송합니다. verbose_mode의 제안을 보지 못했습니다... 같은 것입니다.

저는 오래전부터 사용하던 jdk를 1.8.0_60으로 업그레이드할 때 발생합니다.jdk1.7.0_25로 되돌리면 이 모든 문제가 사라집니다.JRE와 라이브러리 간의 호환성에 문제가 있는 것 같습니다.

코드에 아무것도 없는 상태에서 svn 설정을 변경했을 때 오류가 발생했습니다.프로젝트를 청소하는 것만으로 오류가 해결되었습니다.

나의 경우, 나는 프로젝트를 만들고 그것을 만들었습니다.minSdkVersion=9그리고.targetSdkVersion=17는 자동 생성된 생사습다니용했을성자동을 했습니다.libs/android-support-v4.jar저는 또한 그것을 이용해야만 했습니다.ActionBarActivity용사를 android-support-v7-appcomapt.jar그래서 저는 그냥 그것을 복사했습니다.android-support-v7-appcompat.jar.android-sdk/extras/andrid/support/v7/appcompat/libs를 만들고 내 에 붙여넣었습니다.libs폴더를 누릅니다.그리고 이것이 위의 오류를 야기했습니다.그래서 기본적으로, 나는 그것을 넣을 필요가 있었습니다.android-support-v4.jar.android-sdk/extras/andrid/support/v7/appcompat/libs나의 프로젝트와 마찬가지로.libs폴더를 누릅니다.내가 아는 바로는.v7.jar이 있습니다.v4.jar만의 ㅠㅠ이 했습니다. 그래서, 그것은 그것만의 것이 필요했습니다.v4.jar내 , 으로 생성된 파일, 내젝트의개, .v4.jar 파일파.

빠르고 간단하게 이 방법으로 수정했습니다(Windows XP 홈 에디션에서 ADT 버전: v21.0.0-531062 사용).

  1. 매니페스트 파일을 열었습니다.
  2. 기존 프로젝트 minSdkVersion을 maxSdkVersion과 동일한 값으로 변경(권장: 새 프로젝트를 만들고 maxSdkVersion이 무엇인지 확인하는 것이 좋을 수 있음)
  3. 매니페스트 파일을 저장합니다.
  4. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 프로젝트 빌드를 선택합니다.
  5. 상단 메뉴: 프로젝트 - 정리...아래에서 [관련 프로젝트만 즉시 빌드 시작] 및 [선택한 프로젝트만 빌드]를 선택하고 [확인]을 선택했습니다.
  6. java 파일 열기 - 더 이상 빨간색 오류 없음!
  7. 위의 1단계로 돌아가서 Back minSdkVersion을 원래 값으로 변경합니다(가능한 한 많은 Android 버전을 지원).

효과는 있었지만 며칠마다 문제가 발생합니다.저는 위와 같은 일을 하고 있고 그것은 제가 발전할 수 있도록 해결해줍니다.

이 오류는 클래스 파일 누락의 원인으로 이미 제안된 것 외에도 중복된 클래스 파일을 나타낼 수 있으며, 빌드 경로의 클래스 파일이 빌드 경로에 여러 정의를 가진 다른 클래스를 사용하는 경우 이 오류를 보고합니다.

당신이 우리에게 아주 작은 세부사항을 제공하기 때문에, 당신이 한 일은 믿을 수 없을 정도로 쉬운 실수입니다.

Build Path > Configure Build Path > Projects

추가 프로젝트 폴더를 추가하는 대신 사용자가 이동했습니다.

Build Path > Configure Build Path > Libraries

대신 프로젝트 폴더를 추가했습니다.

코드가 모두 올바르지만 자동으로 가져오기를 재구성할 때 이는 가장 확실한 경우입니다.ctrl+space바로 가기는 com.your.cal 프로젝트를 참조하는 가져오기 문 대신 모든 참조가 bin.com .your.cal 프로젝트를 가리킵니다.

빈을 메모합니다.즉, 다른 프로젝트 폴더 구조를 라이브러리로 처리하여 IDE가 참조하는 이진 클래스를 찾는 작업을 모두 수행하도록 함으로써 클래스를 간접적으로 참조하는 것입니다.

이 문제를 해결하려면 라이브러리에서 폴더를 제거한 후 프로젝트 탭 아래에 추가하고 가져오기를 다시 구성하십시오.당신의 프로젝트는 잘 될 것입니다.

새 Eclipse 버전을 사용하고 이전 Eclipse 버전과 함께 사용했던 이전 작업 공간을 사용하려고 할 때 이 오류가 발생했습니다.

문제를 해결하는 방법은 다음과 같습니다.

패키지 탐색기 -> 속성 -> Java 빌드 경로 -> 라이브러리 -> JRE 시스템 라이브러리에서 내 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다.경로를 찾을 수 없기 때문입니다.-> JRE System Library를 더블클릭 -> "Workspace Default JRE" -> Finish -> OK. -> BUMIT IS Working

참고로.

저의 경우에는 새로운 종속성을 추가한 결과였습니다.pom.xml파일.

새로운 종속성은 이전 버전의 라이브러리(2.5)에 의존했습니다.같은 도서관이 나의 다른 도서관에 필요했습니다.pom.xml버전 3.0이 필요합니다.

어떤 이유에서인지 메이븐은 이러한 충돌에 직면할 때 가장 최근 버전을 생략합니다.이클립스에서 볼 때pom.xml맨 아래에 있는 "의존성 계층" 탭을 선택하여 종속성이 해결되는 방법을 확인할 수 있습니다.여기서 문제의 라이브러리(따라서 클래스)가 이러한 이유로 누락되었는지 확인할 수 있습니다.

제 경우에는 새로운 버전을 잠그는 것만큼 간단했습니다.항목을 마우스 오른쪽 단추로 클릭하여 이 작업을 수행할 수 있습니다. 상황에 맞는 메뉴에서 항목을 잠그는 옵션이 있습니다.

저에게는 위의 해결책이 전혀 효과가 없었습니다.제가 할 수 있었던 일은 클래스의 모든 코드를 선택한 다음 댓글로 변환하고 저장한 다음 다시 일반 텍스트로 변환하는 것이었습니다. 오류가 사라졌습니다.

저의 경우 Tomcat에서 웹 애플리케이션을 시작할 때 실행 중 "javax.ws.rs .web application exception can't resolve"라는 문제가 발생했습니다.

다음 라이브러리를 추가하는 솔루션(Maven):

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0</version>
</dependency>

프로젝트->속성->maven->active maven 프로파일(별도로 구분됨)을 마우스 오른쪽 버튼으로 클릭한 다음 해당 상자에 pom.xml을 쓰고 워크스페이스 프로젝트의 종속성 해결을 확인합니다.

나는 메이븐을 깨끗하게 실행했고(깨끗하게만 실행) 오류를 해결했습니다.

빌드 경로의 JRE에서 JDK를 가리킵니다.그것은 저에게 효과가 있었습니다.

언급URL : https://stackoverflow.com/questions/5547162/eclipse-error-indirectly-referenced-from-required-class-files

반응형