平台:IntelliJ Community Edition 10.0.3
SDK:jdk1.6.0_21
操作系统:Windows 7
所以我对IntelliJ有一个奇怪的情况让我完全难过.我设置了一个Maven项目,并将log4j作为依赖项添加到pom.xml文件中.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
Run Code Online (Sandbox Code Playgroud)
Maven将jar文件安装到我的本地存储库中.
然后我进入IntelliJ的Settings => Maven => Repository Services并更新了我的本地存储库(以便IntelliJ重新索引存储库内容).
最后,我将以下依赖项添加到我的pom.xml文件中(就在log4j依赖项之上).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我现在创建一个新类如下:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在为了古怪.IntelliJ的意图机制拾取并识别maven pom文件中的Logger导入就好了.然而,对于所有的hunnysoft导入,它报告:"无法解析符号'ByteString/Field/FieldBody'",但是 Build => Compile'StackOverflowQuestion.java' 正确编译所有内容,我为这个类创建的单元测试运行正常(尽管意图将对create()的调用标记为问题区域). …