プラットフォーム:IntelliJ Community Edition 10.0.3
SDK:jdk1.6.0_21
OS: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
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ファイル内のロガーインポートを正しく認識して認識します。しかし、hunnysoft輸入のすべてのことが報告されます。「解決シンボル『バイト文字列/フィールド/ FieldBody』ことができない」、しかしビルド=>コンパイル「StackOverflowQuestion.java」コンパイルすべて正しく、私はこのクラスのために作成されたユニットテストは罰金を実行します(ただし、また、create()の呼び出しを問題領域としてマークする意図もあります)。
したがって、どこかでIntelliJが意図サブシステムのjmime.jarファイルを無視しています。log4j依存関係が正常に機能し、すべてが正常にコンパイルおよび実行されるため、混乱しています。F12(「Go To Declaration」)はLoggerインポートで機能しますが、すべてのjmimeインポートで機能しません。
もう1つ、「プロジェクト」ウィンドウの「パッケージ」ビューに移動すると、「com.hunnysoft.jmime」パッケージが表示され、上の「コードライブラリ」の下のコードスニペットにインポートしたすべてのクラスが表示されます。 。上記の依存関係をpom.xmlファイルから削除すると、このパッケージが消えてコンパイルが中断します。
検査のクラスパスが壊れているようですが、[設定] => [意図]のどこにもこの設定がないようです。コンパイラー領域(そのような設定を期待していたわけではありません。IDEAはpomファイルとJDKに基づく正しいクラスパスをすでに知っているはずです)。
最後の実験として、(mavenを使用せずに)まったく新しい標準J2SEアプリケーションプロジェクトを作成し、jmime.jarファイルをそのライブラリの1つとしてプロジェクトに直接追加しました。この新しいプロジェクトで、上記とまったく同じ問題に遭遇しました。
次に、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が欠落している場合はそうなります)。
それで、誰かがアイデアを持っていますか?