IntelliJ检查给出“无法解析符号”但仍编译代码平台: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=jarMaven将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导入就好了。然而,对于所有的hunnysoft导入,它报告:“无法解析符号'ByteString / Field / FieldBody'”,但是 Build => Compile'StackOverflowQuestion.java' 正确编译所有内容,我为这个类创建的单元测试运行正常(尽管意图将对create()的调用标记为问题区域)。所以在某处,IntelliJ忽略了意图子系统的jmime.jar文件。我很困惑,因为log4j依赖工作正常,一切都编译并运行正常。F12(“转到声明”)适用于Logger导入,但会中断所有jmime导入。哦,另外一件事,如果我进入“项目”窗口中的“包”视图,会出现“com.hunnysoft.jmime”包,我可以在“库”下面的代码片段中看到我导入的所有类。从pom.xml文件中删除上述依赖项会导致此包消失并且编译中断。似乎检查的类路径被破坏了,但在Settings => Intentions |中,似乎没有任何设置。编译器区域(不是我预期的任何这样的设置,我相信IDEA应该已经知道基于pom文件和JDK的正确类路径)。作为最后的实验,我创建了一个全新的标准J2SE应用程序项目(不使用maven),并将jmime.jar文件作为其库之一直接添加到项目中。我遇到了与上述新项目完全相同的问题。这是来自jmime jar文件的MANIFEST.MF。我在这个jar文件中没有看到任何异常。我最好的猜测是,问题可能是缺少依赖性问题。但AFAIK jmime应该是自包含的(JarAnalyzer没有提出任何东西,但我不确定如果缺少依赖jar)。那么,任何人都有任何IDAs?
添加回答
举报
0/150
提交
取消