Maven 패키지는 작동하지만 Intellij의 빌드가 실패합니다.


91

내 maven repo의 로컬 jar에 대한 maven 종속성이있는 JDK 1.7 프로젝트가 있습니다.

Intellij를 사용하여 프로젝트를 빌드 할 수 없으며 기호를 찾을 수 없다는 오류가 발생합니다 (기호는 로컬 jar에서 패키지를 가져 오는 클래스입니다).

하지만 'mvn package'를 사용하여 프로젝트를 성공적으로 빌드 할 수 있습니다.

솔루션을 찾기 위해 너무 많은 시간을 보냈습니다.

  • 무효화 된 캐시
  • 'mvn clean install'로컬 jar 종속성
  • Intellij의 Maven 구성에서 '자동로드 스냅 샷'으로 표시됨
  • Intellij의 Reimpoted Maven
  • Syncornized

이 오류는 이전에 몇 번 발생했지만 일반적으로 Intellij를 닫거나 'mvn clean install'을 수행하면 트릭이 발생했습니다.

도와주세요.


1
Maven 저장소가 IntelliJ로 올바르게 구성되어 있습니까?
Ruchira Gayan Ranaweera

예, 저장소 경로는 'mvn install'을 사용할 때 업데이트되는 경로입니다.
Yarin Miran

3
로컬 jar는 스냅 샷 또는 jar의 릴리스 버전입니까? jar가 스냅 샷 인 경우 intellij Maven 설정에서 'Always update snapshots'를 확인하여 ide에 대한 업데이트를 강제 실행해야합니다.
F. Geraerts 2013-08-19

예, 스냅 샷입니다. 이미 해당 옵션을 표시했습니다. 그러나 여전히 변경 사항은 없습니다. (
Yarin Miran

1
설정의 컴파일러 부분에서 "외부 빌드 사용"이 선택되어 있습니까? 그리고 외부 빌드 사용에서 "종속성 변경시 모듈 다시 빌드"옵션도 선택되어 있습니까?
F. Geraerts 2013-08-19

답변:


154

나는 이것이 늦었지만 실행 mvn idea:idea하면 문제가 해결됩니다.


3
이것이 실패한 이유뿐만 아니라 실제 솔루션을 제공하므로 허용되는 대답이어야합니다. 내 모든 신랄함!
Warkst

4
mvn idea:idea최신 상태로 유지되지 않았으며 jetbrains에 의해 유지 관리되지 않습니다
Sean

2
그 후에 mvn install을 다시 실행해야했습니다
Fabio F.

1
그 후에 프로젝트를 다시 빌드하십시오. 감사합니다.
둑 트란

2
절망에서 구해 주셨습니다. 나는 당신에게 키스하고 싶습니다
Martin Bamford 2018

29

모든 .iml 및 POM을 삭제하십시오. 그런 다음 POM을 다시 프로젝트에 복사하여 붙여넣고 다시 열고 다시 가져옵니다.


13
어쩌면 그냥 "모두 다시 가져"메이븐 프로젝트보기에 아무것도 삭제하기 전에 시도
Zveratko

2
.iml도 삭제해야했는데 maven을 다시 가져와도 문제가 해결되지 않았습니다.
Daniel de Zwaan

1
@masoodg, 정말 감사합니다! 당신은 내 하루를 구했습니다! 다시 가져 오기가 도움이되지 않았습니다. 당신의 지시를 따르고 그것은 매력처럼 작동합니다.
tabalin

, 인 IntelliJ 닫기 삭제 *.iml, *.ipr*.iws프로젝트 루트 디렉토리에서 파일, 다음 인 IntelliJ을 재개하는 것은 나를 위해 그것을 고정
theferrit32

16

내 .iml 파일과 pom이 충돌하여 문제를 일으키는 것으로 나타났습니다.


1
비슷한 문제가 있습니다. 빌드 날짜 플러그인으로 구성했습니다. 이 플러그인에는이 값이 "$ {maven.build.timestamp}"인 buildDate 속성이 필요합니다. IntelliJ는이 pom을 구문 분석하는 데 문제가 있으며 iml 파일이 pom과 제대로 동기화되지 않았습니다. 속성 buildDate 동기화가 잘 작동합니다.
chalimartines 2013-08-20

9
이 문제를 해결하는 방법에 대한 팁이 있습니까? 난 단지 인 IntelliJ에 같은 작업에, 넷빈즈 ...이 완전한 생산성 구축함 :( ... 무엇인가에 상관없이 모든 프로젝트를 실행하지 보인다 좋겠
Breno 살가도

1
수정 사항이 동일한 지 모르겠지만 IntelliJ가 IML 파일을 업데이트하도록 강제하기 위해 프로젝트를 종료하고 다시로드해야했습니다 (새로운 종속성을 추가했기 때문에 pom.xml에서 새로 고치지 않았습니다)
SonarJetLens

1
'어떻게'가 '왜'보다 훨씬 더 유용합니다. 이 문제를 해결 한 방법에 대한 세부 정보를 추가하십시오.
주앙 마토스

2
IntelliJ를 닫았습니다. 그런 다음 C:\Users\USERNAME\.IntelliJIdea2017.2\system. 그 후 git clean -xdf소스 디렉토리에서 버전이없는 파일을 모두 제거하고 프로젝트를 다시 가져 왔습니다. 이제 매력처럼 작동합니다.
코 포르

15

다른 사람에게 도움이 될 수있는 경우를 대비하여 비슷한 문제 (IntelliJ가 아닌 mvn에서 프로젝트 빌드)가 발생했을 때 검색에서 가장 먼저 나온 것이기 때문에 더 많은 팁을 추가합니다.

내가 이것을 가지고 있었을 때 그것은 Windows와 Mac에서 다른 수정이었습니다.

Mac에서는 ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory로 이동하여 번들 Maven 대신 별도로 설치된 Maven을 사용하도록 설정했습니다. 모든 빌드 문제가 해결되었습니다.

Windows에서 SSL과 관련된 idea.log에서 예외를 보았고 프로젝트 트리에는 External Libraries 분기 아래에 Java 만 있습니다. 다른 사이트를 보면 IntelliJ가 시스템 하나 대신 자체 개인 JDK를 사용하는 것처럼 들립니다 (제 경우에는 이미 동일한 JDK 버전이 설치되어 있지만). 내 시스템 JDK에는 IntelliJ 개인 JDK에없는 기업 Nexus 서버의 키 저장소에 인증서가 설치되어 있으므로 Nexus에서 파일을 가져 오려고 할 때 예외가 발생했습니다. 이를 위해 해결책은 IntelliJ를 종료하고 IDEA_JDK라는 환경 변수를 설정하여 적절한 인증서가있는 이미 설치 한 JDK를 가리 키도록 설정하고 IntelliJ를 다시 시작하는 것입니다. 모든 빌드 문제가 해결되었습니다.


최신 IntelliJ 2016.3.5를 사용하는 Linux에서 동일한 문제-먼저 작동 한 다음 일부 POM 변경 후 동기화가 이루어지지 않았고 Maven impl 전환 만 도움이되었으므로 Maven을 전환하면 IntelliJ에서 업데이트가 트리거되어 원인이 될 수도 있습니다. 이 프로젝트는 ... 다시 동기화 할 수
그레고르


5

IDE는 빌드를 수행 할 때 자체 번들 Maven 사본을 사용합니다. 터미널의 maven이 IDE와 다른 경우 동일해야합니다.

GOTO (Mac)-IntelliJ 아이디어-> 환경 설정-> 빌드, 실행, 배포-> 빌드 도구-> Maven. Maven 홈 디렉토리 경로 설정 터미널에서 사용하는 Maven 경로를 찾으려면 command를 입력 mvn -version하면 dir 경로를 포함한 세부 정보가 출력됩니다. Maven 홈 디렉토리 에 넣으십시오 .

안전을 위해 JDK 위치에 대해서도 동일한 작업을 수행 할 수 있습니다.

==== 그러한 문제를 일으킬 수있는 다른 것들 ===

mvn 패키지 또는 mvn clean install 빌드를 수행하는 경우 IDE 캐시로 작업을 수행해야합니다. 무엇보다도 이것은 일반적으로 이러한 오류에 도움이됩니다 .-->

파일-> 캐시 무효화


4

나는이 대화에 꽤 늦었다는 것을 알고 있지만, 다른 누군가가이 문제를 발견 할 경우를 대비하여 이것을 게시하고 싶었습니다. 이것이 발생하는 또 다른 이유는 올바른 저장소를 참조하지 않기 때문입니다. Intellij는 기본적으로 자신의 Maven 저장소 대신 번들 버전의 jar를 선택합니다. 연결된 저장소가 올바른지 확인하십시오.


제대로 받는다는 홈 디렉토리를 설정, 사제를 사용하여 Maven을 설치 한 경우 (예를 들어) /usr/local/Cellar/maven/3.5.4/libexec이 문제 해결
sushilshimpi

3

제 경우에는 iml이 동기화되지 않았기 때문에 특정 모듈에 대해 iml을 삭제 한 다음 maven 옵션에서 unignore project를 선택하여 iml을 다시 만듭니다.


3

명령 프롬프트에서 commnad를 실행하고 mvn idea:idea프로젝트를 마우스 오른쪽 버튼으로 클릭-> 메뉴에서 종속성을 다시 가져옵니다.


1

"기호를 찾을 수 없음"은 인텔리가 "종속성"을 해결할 수 없음을 의미합니다. 따라서 "Analyze"-> "Analyze Dependencies"를 클릭 한 다음 "Analysis Scope"를 선택하여 "Dependency analysis"를 강제 할 수 있습니다.


1

여기에 다른 답변에 대한 많은 유용한 팁이 있습니다. 내 문제에 효과가있는 솔루션을 추가하고 싶습니다. .

최근에 비공개 Maven 저장소를 사용하기 시작했으며 항상 mvn -s settings.xml 했으며 Maven cmdline을 호출 때 . IntelliJ는 물론 private repo에 대해 알지 못하므로 약간의 도움이 필요합니다.

설정-> 빌드, 실행, 배포-> 빌드 도구-> Maven으로 이동하여 "사용자 설정 파일"옵션을 재정의합니다.

여기에 이미지 설명 입력


1

나는 같은 문제가 있었다. 이동 :

파일-> 프로젝트 구조-> 모듈 . 모듈을 선택하고 " 종속성 "탭에서 모든 Maven 종속성이 추가되었는지 확인하십시오.

아이디어 편집기에서 유사한 문제에 대해 경고를 받으려면 "Dependencies 탭"에서 "Sources"로 전환하고 src를 소스로 표시를 추가하십시오.


0

나는 같은 문제가 있었다. 아이디어 설정에서 maven 버전을 3.0.5에서 3.0.4로 변경했으며 이제 모두 정상적으로 작동합니다. 그게 왜 도움이되는지 모르겠어요.


0

캐시를 무효화하고 Maven을 설치된 버전으로 변경했지만 아무것도 작동하지 않았습니다.

새 프로젝트를 닫고 다시 생성하면 문제가 해결되었습니다.


0

프로젝트를 닫고 루트 pom (폴더뿐만 아니라 pom 파일 자체)을 클릭하여 다시 가져 왔습니다.


0

나는 기쁨없이 위의 모든 것을 시도했습니다. 그러나 마침내 작동하게 된 한 가지 일을했습니다.

C : \ Users \ .IntellijJIdea2018.2로 이동하여 전체 폴더를 삭제했습니다.

IntelliJ에 대한 모든 설정 및 캐시를 제거합니다. 내 프로젝트를 처음부터 다시 가져와야했지만 간단한 제거 및 다시 가져 오기는 이전에는 작동하지 않았지만 마침내 다시 작동하게되었습니다.


0

gradle을 사용하는 경우 아래 명령을 시도하십시오.

gradle cleanIdea idea


0

이 간단한 절차는 위험없이 약 1 분 정도 걸립니다.

  • IntelliJ 닫기
  • 삭제 .idea처럼 인 IntelliJ의 특정 파일을 / *, * .iml,뿐만 아니라 POM을 삭제했다 제안 등 .settings,하지만 필요 이럴 없습니다.
  • 그런 다음 파일 > 새로 만들기> 기존 소스의 프로젝트를 사용하여 IntelliJ에서 프로젝트를 다시 생성 하고 단계를 따릅니다. 여러 프로필 또는 (동일한 프로젝트)를 가져 오지 않도록주의하십시오.

0

.idea 폴더를 삭제하고 IDE를 닫습니다.

IDE를 다시 열고 새로 가져올 프로젝트를 가져 오십시오. .IDEA 폴더가 이전에 삭제 되었기 때문입니다.

외부 라이브러리 모듈을 확인하고 필요한 종속성으로 채워지지 않은 경우 IDE에서 maven settings.xml 위치가 올바르게 지정되었는지 확인하십시오.


0

언급되지 않은 가능성도 있습니다. 라이브러리를 가져 오는 경우com.sun.* . 또한이 문제가 발생합니다.

프로그램은 ide에서 실행될 때 작동하며, 이러한 클래스 com.sun.*는 모두 jre/lib디렉토리에 있으므로 실행시로드됩니다. 그러나을 실행하면 mvn packageJava 1.6 이후의 oracle 제한으로 인해 이러한 라이브러리에 액세스 할 수 없습니다 (이 라이브러리는 어떤 방식 으로든 사용되지 않음). 이 문제를 해결하기 위해 다음을 추가 할 수 있습니다.

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

cootclasspath를 자신의 경로로 바꾸는 것을 잊지 마십시오. rt.jar

Access restriction: The type XXX is not accessible due to restriction on required library자세한 내용을 검색 할 수 있습니다 .


0

잘못된 모듈이 구성된 경우 다음 단계를 수행하십시오.

  • 프로젝트 설정으로 이동
  • 모듈로 이동
  • 거기에 있으면 안되는 모듈 삭제

0
  1. Maven 탭에서 +를 클릭하고 pom.xml을 선택하십시오.
  2. Maven 탭에서 다운로드 소스 및 문서를 클릭하십시오.
  3. 프로젝트 구조 (프로젝트 파일 / 디렉토리를 볼 수있는 곳)에서 빌드하려는 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 모듈 프로젝트 이름 빌드를 선택합니다.
  4. 실행 탭에서 + 응용 프로그램 추가를 사용하여 구성 편집하고 아래 필드를 채 웁니다. i. 메인 클래스-프로젝트 탭에서 수동으로 선택 메인 클래스 선택 ii. 모듈의 클래스 경로 사용-애플리케이션 이름 선택 iii. 명령 줄 단축-클래스 경로 파일
  5. 이제 앱을 실행하기 만하면됩니다.

0

제 경우에는 문제가 다른 Project Java SDK 버전에있었습니다. 터미널에서 프로젝트를 빌드 할 때 maven은 Java 8을 사용했고 IDEA에서 빌드 할 때는 Java 11을 사용했습니다.

파일> 프로젝트 구조 ...로 이동하고 프로젝트 설정에서 프로젝트 SDK를 필요한 버전으로 설정합니다.


0

나에게 문제는 IntelliJ Java Compiler 설정 에서 Ajc 컴파일러를 선택 했다는 것 입니다. Javac로 다시 변경하면 모든 것이 잘 작동했습니다.


0

Mac의 경우 컴퓨터에서 Intellij Idea Appication을 삭제하고 ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1에서 캐시 파일을 삭제하여 문제를 해결했습니다.

그런 다음 다시 설치하고 내 프로젝트를 열고 성공적으로 빌드하십시오!


0

같은 문제가 발생했습니다. mvn clean package터미널 에서 명령을 성공적으로 실행할 수 있지만 IntellJ에서 실행하거나 빌드하지 못했습니다. 다음과 같은 조치를 취했지만 모두 실패했습니다.

  • 무효화 된 캐시
  • 실행 mvn clean package또는 mvn clean package터미널
  • Intellij의 Maven 구성에서 '자동로드 스냅 샷'으로 표시됨
  • Syncornize 또는 다시 가져 오기
  • .idea와 같은 모든 IntellJ 관련 파일을 삭제하고 프로젝트를 다시 가져옵니다.
  • 모든 종속성 파일을 제거한 다음 실행 mvn clean package
  • Java 버전을 전환하거나 IntellJ에 포함 된 Java 사용
  • 운영 mvn idea:idea
  • Maven 홈 변경
  • 모듈 탭에서 src 디렉토리를 소스로 표시

내가 마지막으로 한 일은 프로젝트에서 .idea와 .iml을 삭제하고 모든 종속성 파일을 삭제 한 다음 컴퓨터에서 IntellJ를 삭제하는 것입니다. IntellJ를 다시 설치 한 후 프로젝트가 성공적으로 빌드되었습니다. 이 문제를 해결하는 더 나은 방법이 있으면 좋겠습니다.

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