web-dev-qa-db-ja.com

Maven 3アーティファクトの問題

私はstruts2-archtype-starterを使用して、Eclipseで新しいstrutsプロジェクトを作成しました。

私のプロジェクトですでに何かをする前にいくつかのエラー。それらのほとんどを解決しましたが、まだいくつかの問題が1つあります。

Missing artifact com.Sun:tools:jar:1.5.0:system pom.xml

Tools.jarをリポジトリに手動で追加しようとしましたが、問題は解決しませんでした。

私のポンはこんな感じ

<?xml version="1.0" encoding="UTF-8" ?>

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.divespot</groupId>
    <artifactId>website</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>E-Divespot diving community</name>
    <url>http://www.e-divespot.com</url>
    <description>A website to support divers from all around the world.</description>

    <dependencies>
        <!-- Junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>

        <!--  Struts 2 -->
        <dependency>
            <groupId>org.Apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.0.11.2</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.struts</groupId>
            <artifactId>struts2-sitemesh-plugin</artifactId>
            <version>2.0.11.2</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>2.0.11.2</version>
        </dependency>

        <!-- Servlet & Jsp -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Jakarta Commons -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.1.1</version>
        </dependency>

        <!-- Dwr -->
        <dependency>
            <groupId>uk.ltd.getahead</groupId>
            <artifactId>dwr</artifactId>
            <version>1.1-beta-3</version>
        </dependency>
    </dependencies>

    <build>
      <finalName>website</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                   <source>1.6</source>
                   <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.5</version>
                <configuration>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
33
Mark Baijens

表示されているエラーは、おそらくJava_HOMEパスが正しく設定されていないためです。 C:\{directories to jre}\..\lib\tools.jar

Eclipse.iniを変更して次のようなものを追加することにより、組み込みのJDKを使用してEclipseを起動できます。

-vm
C:\{directories to JDK}\bin\javaw.exe

私が学んだことは、Eclipseはデフォルトでシステムjreを使用してEclipseを起動するということです。おそらく、Eclipseの起動時に、「EclipseはJREの下で実行されており、m2EclipseにはJDKが必要で、一部のプラグインは機能しない」というメッセージが表示されます。

(Eclipseで)[ヘルプ]-> [インストールの詳細]に移動し、-vmを探した場合、おそらくそれが予期しているパス構造を持たない場所を指していることがわかります。

注:何らかの理由でこの問題が発生した場合、mavenのJava.homeはEclipseの起動元から評価されました。したがって、Java.homeと見なされるものからtools.jarをプルしようとすると、実際にはenv/system変数としてJava_HOMEとして設定したものとは異なる場合があります。

45
John Vint
<dependency>
    <groupId>org.Apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>${struts2.version}</version>
    <exclusions>
        <exclusion>
            <artifactId>tools</artifactId>
            <groupId>com.Sun</groupId>
        </exclusion>
    </exclusions>
</dependency>
10
Thamizharasu

リポジトリからtools.jarを使用することはできません。

悲しいことに、あなたの依存関係ツリーの何かがあなたができると思っています。したがって、 'excludes'を使用して既存の依存関係を取り除き、それを次のように置き換える必要があります。

以下のバージョンをエラーメッセージのバージョンと一致させると、「除外」が不要になる場合があります。

必要なもの:

  <profiles>
    <profile>
      <id>default-tools.jar</id>
      <activation>
        <property>
          <name>Java.vendor</name>
          <value>Sun Microsystems Inc.</value>
        </property>
      </activation>
      <dependencies>
        <dependency>
          <groupId>com.Sun</groupId>
          <artifactId>tools</artifactId>
          <version>whatever</version>
          <scope>system</scope>
          <systemPath>${Java.home}/../lib/tools.jar</systemPath>
        </dependency>
      </dependencies>
    </profile>
3
bmargulies

別の答えを追加する必要があります。 m2eを1.4.20130601-0317にアップグレードした後、エラーが再び発生しました。繰り返しますが、提案した解決策のどれも、私が提案したものを含めて機能しませんでした。結局、私は犯人を見つけました:org.htmlparser:1.6を含むことはtools.jarに暗黙的な依存関係がありました。インストールされたjreを削除することがなぜ古いm2e(1.0.something)で助けになったのかはわかりません。ここでの解決策は、tools.jarを除外することです。

    <dependency>
        <groupId>org.htmlparser</groupId>
        <artifactId>htmlparser</artifactId>
        <version>1.6</version>
        <exclusions>
            <exclusion>
                <artifactId>tools</artifactId>
                <groupId>com.Sun</groupId>
            </exclusion>
        </exclusions>
    </dependency>
2
mplwork

最近同じ問題が発生したため、上記の解決策はどれもうまくいきませんでした。私は http://blog.samratdhillon.com/archives/598 に遭遇し、これが Eclipseバグ であると考えました。

インストール済みのすべてのjreをEclipseの構成(Window -> Preferences -> Java -> Installed JREs)から削除し、jdkを1つだけ保持する必要がありました。その後、mavenはEclipse.iniなどに変更を加えることなく、問題なく動作しました。これは、Ecplise Indigo Service Release 1に対応しています。

1
mplwork

主な問題はmavanがtool.jarを細かくできないことです。したがって、この問題は発生しますuプロジェクトにtool.jarファイルを追加するだけですTool.jar存在するJavaソフトウェアC:\ Program Files\Java\jdk1.6.0_14\lib
このコードを試してください正常に実行されることを願っていますhttp://maven.Apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 Strust2Testing Strust2Testing 0.0.1-SNAPSHOT war org.Apache.struts

        <artifactId>Struts2-core </artifactId>
        <version>2.3.15.1</version>
        <exclusions>
    <exclusion>
        <artifactId>tools</artifactId>
        <groupId>com.Sun</groupId>
    </exclusion>
</exclusions>
    </dependency>
</dependencies>
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>
0

Eclipse.iniの例:

-startup
plugins/org.Eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.Eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-product
org.Eclipse.epp.package.Java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.Eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vm
C:\Java\JDK\1.6\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx1024m

-vm値:Linux例:

-vm
/opt/Sun-jdk-1.6.0.02/bin/Java

From ここにリンクの説明を入力してください

0
VSE

紛らわしいことに、$ {Java.home}プロパティは実際にJRE_HOME環境変数。

http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide (Java.homeを検索)

Java_HOMEをjreルートに変更したくない場合は、JRE_HOME代わりに変数。

0