플랫폼 : IntelliJ Community Edition 10.0.3
SDK : jdk1.6.0_21
OS : Windows 7
그래서 IntelliJ와 함께 이상한 상황에 처하게되었습니다. 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의 설정 => Maven => 리포지토리 서비스로 이동하여 로컬 리포지토리를 업데이트했습니다 (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 가져 오기를 잘 인식합니다. 그러나 모든 hunnysoft 가져 오기에 대해 다음과 같이보고합니다. "기호 'ByteString / Field / FieldBody'를 확인할 수 없음", BUT Build => Compile 'StackOverflowQuestion.java'가 모든 것을 올바르게 컴파일하고이 클래스에 대해 작성한 단위 테스트가 정상적으로 실행됩니다. 의도는 create () 호출도 문제 영역으로 표시합니다.
어딘가에서 IntelliJ는 의도 하위 시스템에 대한 jmime.jar 파일을 무시합니다. log4j 의존성이 잘 작동하고 모든 것이 컴파일되고 잘 작동하기 때문에 혼란 스럽습니다. F12 ( "Go To Declaration")는 로거 가져 오기에서 작동하지만 모든 jmime 가져 오기에서 끊어집니다.
아, 또 하나, "프로젝트"창의 "패키지"보기로 가면 "com.hunnysoft.jmime"패키지가 나타나고 "라이브러리"아래의 코드 스 니펫에서 가져온 모든 클래스를 볼 수 있습니다. . pom.xml 파일에서 위의 종속성을 제거하면이 패키지가 사라지고 컴파일이 중단됩니다.
검사의 클래스 경로가 망가진 것 같지만 Settings => Intentions | 컴파일러 영역 (그런 설정을 기대하지는 않았지만 IDEA가 이미 pom 파일과 JDK를 기반으로 올바른 클래스 경로를 알고 있어야한다고 생각합니다).
마지막 실험으로 나는 maven을 사용하지 않고 새로운 표준 J2SE 응용 프로그램 프로젝트를 만들고 jmime.jar 파일을 라이브러리 중 하나로 프로젝트에 직접 추가했습니다. 이 새 프로젝트에서 위에서 설명한 것과 정확히 동일한 문제가 발생합니다.
다음은 jmime jar 파일의 MANIFEST.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.
이 jar 파일에서 이상한 점이 없습니다.
내 최선의 추측은 아마도 문제가 누락 된 종속성 문제 일 수 있다는 것입니다. 그러나 AFAIK jmime은 자체 포함되어 있어야합니다 (JarAnalyzer는 아무것도 제시하지 않지만 종속성 jar이 누락되어 있는지 확실하지 않습니다).
그래서 누구나 IDEA가 있습니까?