programing

IntelliJ 검사는 "해결할 수 없는 기호"를 제공하지만 여전히 코드를 컴파일합니다.

goodcopy 2022. 7. 23. 13:34
반응형

IntelliJ 검사는 "해결할 수 없는 기호"를 제공하지만 여전히 코드를 컴파일합니다.

: .3IntelliJ 10.0.3
SDK: jdk1.6.0_21
7 OS: Windows 7

그래서 나는 인텔리J와 이상한 상황에 처해서 완전히 난처해졌다.Maven 프로젝트를 셋업하고 pom.xml 파일에 log4j를 의존관계로 추가합니다.IDEA 검사는 정상적으로 실행되며 유닛 테스트는 모두 컴파일 및 실행됩니다.

그런 다음 mvn install:install-file을 사용하여 hunnysoft의 jmime 라이브러리를 로컬 maven 저장소에 추가했습니다.

mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar

Maven은 내 지역 저장소에 jar 파일을 잘 설치했어.

그런 다음 IntelliJ의 Settings = > Maven = > Repository Services로 이동하여 로컬 저장소를 업데이트했습니다(IntelliJ가 저장소 콘텐츠를 다시 인덱싱하도록 함).

마지막으로 다음 의존관계를 pom.xml 파일에 추가했습니다(log4j 의존관계 바로 위).

<dependency>
    <groupId>jmime</groupId>
    <artifactId>jmime</artifactId>
    <version>3.1.1e</version>
</dependency>

이제 다음과 같이 새 클래스를 만듭니다.

package com.stackoverflow.question;

import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;

public class StackOverflowQuestion {
    public Field create(String name, String text) {
        Logger.getLogger(getClass()).debug("create entered");
        FieldBody body = new FieldBody();
        body.setText(new ByteString(text));
        Field field = new Field();
        field.setFieldName(name);
        field.setFieldBody(body);
        return field;
    }
}

자, 이제 이상할 차례야릇하다.IntelliJ의 의도적인 메커니즘은 maven pom 파일에서 Logger import를 정상적으로 인식합니다.그러나 모든 hunnysoft Import에 대해 "기호 'ByteString/Field/FieldBody'를 해결할 수 없습니다."라고 보고하지만 빌드 => 'StackOverflowQuestion'을 컴파일합니다.java'는 모든 것을 올바르게 컴파일하고 이 클래스에 대해 작성한 유닛테스트는 정상적으로 실행됩니다(단, create()에 대한 호출도 문제 영역으로 마크되어 있습니다).

어딘가에서 IntelliJ가 의도 서브시스템의 jmime.jar 파일을 무시하고 있습니다.log4j 의존관계는 정상적으로 작동하고 컴파일 및 실행은 모두 정상이기 때문에 혼란스럽습니다.F12("Go To Declaration")는 Logger 가져오기에서는 작동하지만 모든 jmime 가져오기에서는 중단됩니다.

아, 또 하나, "프로젝트" 창의 "패키지" 보기로 이동하면 "콤"이 나타납니다.hunnysoft.jmime" 패키지가 표시되고 위의 코드 스니펫에서 Import한 모든 클래스가 "Libraries" 아래에 표시됩니다.위의 의존관계를 pom.xml 파일에서 삭제하면 이 패키지가 사라지고 컴파일이 중단됩니다.

인스펙션의 클래스 패스는 파손되어 있는 것 같습니다만, 설정 => 의도 | 컴파일러 영역 어디에도 설정이 없는 것 같습니다(이러한 설정은 기대한 것이 아닙니다.IDEA는 이미 POM 파일과 JDK에 근거해 올바른 클래스 패스를 알고 있을 것입니다).

마지막 실험으로 새로운 표준 J2SE 어플리케이션 프로젝트를 만들고(maven을 사용하지 않고) jmime.jar 파일을 라이브러리 중 하나로 프로젝트에 직접 추가했습니다.저는 이번 새로운 프로젝트에서 위에서 설명한 것과 똑같은 문제에 봉착했습니다.

여기 매니페스트가 있습니다.jmime jar 파일의 MF.

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4
Created-By: 10.0-b23 (Sun Microsystems Inc.)

Name: com/hunnysoft/jmime/
Sealed: true
Specification-Title: Hunny JMIME
Specification-Version: 3.1.1
Specification-Vendor: Hunny Software, Inc.
Implementation-Title: com.hunnysoft.jmime
Implementation-Version: 3.1.1E
Implementation-Vendor: Hunny Software, Inc.

이 항아리 파일에는 특이한 점이 없어요

제 추측으로는 아마도 이 문제가 의존관계 결여 문제일 것입니다.그러나 AFAIK jmime은 스스로 억제되어야 합니다(JarAnalyzer는 아무것도 생각해내지 못했습니다만, 의존성 항아리가 없어지면 어떻게 될지 모르겠습니다).

아이디어 있는 사람?

, 도 한 번 해 보세요.File | Invalidate Caches도움이 되지 않으면 IDEA 시스템 디렉토리를 삭제합니다.그런 다음 Maven 프로젝트를 다시 가져와 도움이 되는지 확인합니다.

컴파일된 클래스가 잘못된 정보를 보고하여 IDEA를 혼란시킬 수 있습니다.javap을 사용하여 이 jar의 클래스가 올바른 이름을 보고하는지 확인합니다.

다음 트릭으로 이 문제가 해결되었습니다.

  • 코드 에디터를 오른쪽 클릭합니다.
  • Maven을 마우스로 가리키고
  • [재 Import]를 클릭합니다.

제 아이디어 버전은 12.0.4입니다.

위의 솔루션 중 어느 것도 나에게 효과가 없었다.main.iml 파일을 수동으로 삭제하면 갑자기 동작합니다.

이것은 이 질문에 대한 또 다른 답변에서 언급되었지만, 이것만으로도 해결됩니다.나는 모든 조립을 인텔리J 외곽의 다른 터미널에서 한다.따라서 캐시는 IntelliJ 앱이 읽기 위해 적절한 권한을 설정해야 합니다.

프로젝트의 루트 폴더에서 실행합니다.

$ mvn -U idea:idea

Gradle 사용자의 경우:

프로젝트 동기화가 필요할 수 있습니다.build.gradle

[프로젝트] 페인의 그래들파일을 오른쪽 클릭하여 조작할 수 있습니다만, 조작으로 아무것도 할 수 없었던 것 같습니다(버전의 버그가 의심됩니다).IntelliJ 태스크가 시작되지 않기 때문에 이 문제가 발생해도 알 수 있습니다.대신 Gradle Tool 창을 열고 Synchronize(새로 고침) 버튼을 클릭합니다.캐시를 무효화하고 재기동해도 효과가 없었습니다.

내 상황:그래들하고 스칼라 프로젝트를 사용하다가 이걸 해야 했어요

[파일] - > [캐시 무효화]를 실행하고 IDE 를 재기동하면, 프로젝트가 열립니다.오른쪽 상단에 자동 Import를 활성화할지 여부를 묻는 토스트 박스가 표시되며 문제가 해결되었습니다.

프로젝트 구조에서 모듈 이름이 일관되지 않거나 중복된 것이 이 문제의 원인이었습니다.

  1. ★★★★★★★★★★★★★★★로 이동File -> Project Strucutre -> Modules
  2. 에서 빨간색 밑줄이 있는 모듈을 클릭합니다.
  3. "Dependencies(의존관계)" 탭으로 이동.
  4. 빨간색으로 표시된 종속성이 실제로 종속성 목록에 있는지 확인하십시오.그렇지 않으면 기존 종속성 이름과 일치하도록 이름을 바꿉니다.

이 문제는 IntelliJ가 제대로 종료되지 않아 이름이 변경된 모듈 이름을 제대로 저장할 수 없는 경우에 발생할 수 있습니다.

또 다른 체크 사항:종속성이 중복되지 않도록 하십시오.제 경우 이 동작을 나타내는 모듈은 다음과 같이 잘못 설정되어 있습니다.다른 모듈에 의존하며 다른 모듈에 의해 생성된 jar에 의존합니다.이는 중복으로 참조되는 모든 기호를 의미하며 모호했습니다.

수정본이 출판되었습니까?이 문제는 원래 2013년 컴파일러 오버홀로 인해 v11/12에 영향을 미쳤던 것으로 보입니다.2014년 말까지 Jira 관련 이슈에 대한 논의.http://youtrack.jetbrains.com/issue/IDEA-98425

또, Jira IDEA-98425 에서는 고정 마크가 붙어 있습니다만, 검증되지 않았습니다(v12.0.3 ) 。Windows 버전 13.1.1에서 이 "심볼을 해결할 수 없음" 문제를 해결하는 데 도움이 되는 해결 방법은 없습니다.

a. 삭제.IdealIC13 폴더(그 후 파일\캐시 비활성화/재시작)

b. Maven Projects 창에서

b.1 mvn - U idea : idea : " 이 maven 목표를 실행하면 의존관계가 새로고침됩니다.이것은 이전 버전에서는 동작하지만, 지난 FRI 이후 이 maven 목표를 실행하는 것은 프로젝트를 재컴파일하려고 했기 때문에 실패했습니다(물론 "Unable to resolve Symbols"로 실패하였습니다).mvn - version - 는 maven 버전이 3.2.5 로 참조되어 동작하고 있는 것을 나타내고 있습니다.

b.2 프로젝트를 오른쪽 클릭하기만 하면 다시 Import할 수 있습니다.

b.3 파일 \ 캐시 비활성화/재시작

c. 이 설정의 유효화와 무효화를 모두 시도했다.파일 -> 설정 -> 메이븐 -> Import -> "maven3을 사용하여 프로젝트 Import"

d. 설정 \ Maven \ Multiproject 빌드 실패 정책 = 종료 시 실패(기본값의 경우)

아무것도 안 돼.Maven에 대한 IntelliJ의 지원은 어떻게 되어가고 있습니까?

https://youtrack.jetbrains.com/issue/IDEA-99302

JetBeans 릴리즈 이력에서 https://www.jetbrains.com/company/history.jsp

IntelliJ v14 2014년 11월

IntelliJ v13 DEC 2013

(검증되지 않았지만) v12가 후속 릴리즈에 통합될 것으로 예상됩니다.인텔리J 버전 중 비슷한 문제가 있는 사람이 있습니까?경험담을 들려주세요.IntelliJ maven 지원이 고장난 것 같습니다.

다른 응답자들은 모두 나에게 효과가 없었다.인텔리J가 잘못된 .m2 파일을 지적했기 때문에 Import가 해결되지 않았습니다.

IntelliJ 버전:인텔리J 아이디어 2018.1.5

.m2 디렉토리의 위치가 잘못된 경로를 가리켰습니다.수정은 IntelliJ를 오른쪽 .m2 디렉토리로 다시 포인트하여 업데이트만 하면 됩니다.

먼저 [파일]-> [설정]-> [빌드], [실행], [도입]-> [빌드툴]-> [매븐]으로 이동합니다.

User settings file: 및 Local repository: 를 올바른 .m2 디렉토리의 올바른 위치로 변경해야 했습니다.

그 후, 파일 -> 설정 -> 빌드, 실행, 전개 -> 빌드 툴 -> 맵 -> 레포지토리로 이동합니다.

[ Update ]버튼을 클릭합니다.

"shift"를 두 번 누르고 "Remport All Maven projects"를 누르면 항상 작동합니다.

여기에 이미지 설명 입력

내 프로젝트 구조:

src -> main -> scala -> mypackages

동작 내용:

해 주세요.scala폴더를 누른 후 "디렉토리를 소스 루트로 표시"를 누릅니다.

File / Invalidate 캐시를 통해 해결한 여러분 모두가 부럽습니다.이 질문에 대한 모든 것을 시도해 보고 웹에서 몇 시간을 보냈습니다.

수 에 저는 했습니다.%USERPROFILE%\AppData\Local\JetBrains\IntelliJIdea2020.3\caches

이것을 실행하고 IntelliJ(2020.3)를 재기동하면 인덱스가 재구축되어 에러가 해소됩니다.

maven 프로젝트가 멀티 모듈프로젝트일 경우 일부 모듈이 intellij에 의해 무시되는지 확인합니다.

  1. - > [ - ]> [ Projects ]를무시되는지 합니다([ ] - > [ ] - > [ (- ] - > [ (( ] 、 [ ((( ] 、 [ ((((( ] ) 。gs-multi-module★★★★★★★★★★★★★★★★★★★★★」

여기에 이미지 설명 입력

  1. 하여 [ ]를 선택합니다.Unignore Projects.

여기에 이미지 설명 입력

그런 다음 intelli가 인덱싱을 완료할 때까지 기다립니다.이 후 작업이 실행됩니다.

Maven Importer JDK에 문제가 있었습니다.JDK 11로 바뀌었는데 Maven Project reload는 JDK 8에서만 동작했습니다.

여기에 이미지 설명 입력

Gradle 프로젝트의 경우:

  1. IntelliJ IDEA 종료
  2. <problematic-project-root>/.idea
  3. <problematic-project-root>/.gradle
  4. 「」를 합니다..iml<problematic-project-root>
    • Windows 명령 프롬프트:DEL /S /Q *.iml
    • Linux:find . | grep -e .iml$ | xargs rm
  5. Gradle에서 IntelliJ IDEA로 프로젝트 재 Import

네, 필요한 JAR을 포함하는 라이브러리를 생성하여 모듈 의존관계로 추가해야 할 것 같습니다.

다른 대안으로.

JDK7_07을 사용해도 이 문제가 발생하였습니다.IDEA 시스템 디렉토리 삭제를 제외한 모든 답변을 시도했습니다.하지만, 나는 여전히 문제가 있다.그래서 내가 한 일은:

최신 JDK(JDK7_45)를 설치하고 Intelij의 JDK를 새로운 JDK로 설정하면 동작합니다.

프로젝트를 다시 가져온 것이 내게는 효과가 있었다.[ Project ]우클릭 -> [ Maven ]-> [ Reimport ]

[파일] -> [캐시 무효화]를 실행하고 IDE 를 재기동했을 때, 프로젝트를 엽니다.오른쪽 상단에 "Maven changes detected" 대화상자가 표시되며 자동 Import 및 활성화 옵션을 제공합니다.여기서 프로젝트를 수입한 후에도 같은 문제가 있었습니다.위의 절차로 문제가 해결되었습니다.

권장 솔루션이 작동하지 않았다.pom = > maven = > unignore project를 우클릭하여 여러 프로젝트를 무시하지 않을 수 없었습니다.

그리고 나서

mvn clean install -T 6 -DskipTests

콘솔에서 인텔리J는 다시 행복했다.어떻게 프로젝트가 무시당했는지...

프로젝트 구조를 열고 프로젝트를 클릭한 후 SDK 버전을 선택할 때도 있습니다.

제 경우 인텔리아이디어에서 스프링 부트 프로젝트를 열려고 하는데 스프링 관련 파일을 모두 Import할 수 없는 것과 같은 문제가 발생하였습니다.

그리고 나서 나는 했다:

파일 -> 프로젝트 닫기 -> 프로젝트 가져오기 -> 외부 모델에서 가져오기 -> 그래들 선택 -> 다음 -> 파일 위치에서 프로젝트 선택 -> 완료

이제 모든 것이 예상대로 잘 작동하고 있다.

나는 여기서 많은 답을 보았지만 마침내 이 해결책을 찾았다.나 같은 사람이 쓸 수 있을 거야

방금 이 문제가 있었는데 그냥 사라지지 않았어요.으로 했습니다.~인텔리J 프로젝트를 처음부터 재구축했습니다.(캐시된 파일 등의 문제를 해결하는 데 1시간이 걸리는 것에 비해, 최종적으로 15분 정도밖에 걸리지 않았습니다.)

제 추측으로는 초기 문제는 다음과 같은 이유로 인해 발생한 것 같습니다.javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html(NB: 2018년 현재 해당 링크는 정지되어 있지만 archive.org에는 이 답변이 처음 작성되었을 때부터의 페이지 복사본이 있습니다.) 또는 디스크 공간/메모리 문제로 인해 Java가 크래시됩니다.인텔리J는 그냥 타락한 것처럼 보였다.

캐시를 비활성화하고 재시작한 후 maven 설정이 정상임을 확인한 후에도 종속적으로 설정한 모듈의 "Cannot resolve symbol"이 계속 표시됩니다.제가 잘못된 범위로 설정했었네요.

모듈을 마우스 오른쪽 버튼으로 클릭하고 Open Module Settings(모듈 설정 열기)를 선택하면 확인할 수 있습니다.종속성 탭을 클릭하고 해결할 수 없는 종속성의 범위가 컴파일로 설정되어 있는지 확인합니다.

  1. "설정" 열기
  2. "Maven" 검색
  3. "Maven" 아래에서 "Ignored Files"를 클릭합니다.
  4. 누락된 종속성을 포함하는 pom.xml 파일의 선택을 취소합니다.
  5. [확인] 을 클릭합니다.
  6. [파일] -> [캐시 비활성화/재시작...]을 클릭합니다.
  7. "비활성화 후 재시작"을 클릭합니다.

제 경우, 제 프로젝트는 롬복(Lombok)을 사용하고 있었고 인텔리J에서는 롬복 플러그인이 없었습니다.설치 후 모든 것이 정상적으로 작동했습니다.

IntelliJ IDEA의 경우2020.3, 선택:

  1. [ File ] > [ Invalidate Caches ] / [Restart]...> 무효화재시작

  2. 사전 빌드된 공유 인덱스 다운로드 메시지가 표시되면:

    여기에 이미지 설명 입력

    공유 인덱스를 Import하지 않음: 대화상자를 닫거나 [More actions]> [ Do not show ]를 선택합니다.

이 경우 buildDir만 삭제됩니다.이 경우,File | Invalidate Caches동작하지 않습니다.

할 때Build | Make Project전에File | Invalidate Caches, 모든 것이 정상적으로 동작합니다.

위의 솔루션 중 어느 것도 해결하지 못했습니다.코드가 정상적으로 컴파일 된 것과 같은 문제가 있었습니다만, IntelliJ에서는 Import를 찾을 수 없었습니다.IntelliJ가 코드 완성으로부터 Import를 제안했는데도.

제 해결책은 모든 것을 기본 패키지로 이동하고com.foo.bar패키지를 다시 만들고 모든 것을 원래대로 되돌립니다.

mvn idea:idea날 위해 일했어여기서 찾았어.한 시간 이상 걸렸는데, 누군가 도움이 됐으면 좋겠네요.

언급URL : https://stackoverflow.com/questions/5905896/intellij-inspection-gives-cannot-resolve-symbol-but-still-compiles-code

반응형