0

Struts2は初めてです。

Struts2の依存関係を含めるときはいつでも、なぜこのようにする必要があるのですか?

<dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>${struts.version}</version>
        <exclusions>
            <exclusion>
                <artifactId>tools</artifactId>
                <groupId>com.sun</groupId>
            </exclusion>
        </exclusions>
    </dependency> 

これを行わないと、EclipseJunoはこの時点でエラーを表示します。

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
 http://maven.apache.org/maven-v4_0_0.xsd

このエラーの場合:

Missing artifact com.sun:tools:jar:1.5.0

これはそれを行う方法ですか、それともより良い方法がありますか?

この問題はバージョン2.1.6以降で発生することに気づきました。

4

3 に答える 3

4

アーティファクトcom.sun:tools:jar:1.5.0は (JRE ではなく) JDK の jar です。この jar はどの Maven リポジトリでも使用できませんが、<JDK_HOME>/lib. そのため、このエラーが発生します。

除外を指定すると、maven は jar を見つけようとしません (したがって、失敗しません)。

Struts2 では、(実行時ではなく) コンパイル時にこの依存関係が必要です。

したがって、除外を設定することが、この問題を解決する正しい方法です。maven を実行するには JDK が必要なので、プロジェクトをコンパイルするときに tools.jar を使用できます。

于 2013-03-20T10:19:43.083 に答える
0

これを行う必要はありません。

これは、Eclipse、Eclipseプロジェクト、またはEclipseMavenプラグインの構成に問題があることを示しています。比較として、私は基本的にすべてのバージョンのS2プロジェクトを持っており、Javaツールのjarを除外する必要はありません。

于 2013-03-20T12:37:53.493 に答える
0

問題の説明

実際には、struts2 はシステムの依存関係、つまり に依存していますtools.jar。この依存関係は、次のパスを解決することによって検出されます: ${java.home}/../lib/tools.jar

プロジェクトをmavenでコンパイルすると、mavenは適切な${java.home}JDKの場所に置き換えるのに十分賢いでしょう。

何らかの理由で、Maven 化されたプロジェクトを Eclipse で (つまり、通常は m2e ヘルプを使用して) コンパイルしようとすると、 Eclipse コマンド ライン パラメータ${java.home}に対して解決されます。-vm


解決

この問題を解決したい場合は、tools.jar. 代わりに、次のいずれかの方法で、お気に入りの JDK で Eclipse を強制的に実行します ( OS がわからないため、OS に依存しない形式で例を示します)。

  • コマンド ライン スイッチ

/path/to/eclipse -vm /path/to/jdk/bin/javaw

Windows での例については、このSO の回答を確認してください。

  • eclipse.ini

-vm
/path/to/jdk/bin/javaw

Windows での例については、このSO の回答を確認してください。

于 2013-11-07T03:23:29.210 に答える