Maven 3 Проблема с артефактами - PullRequest
33 голосов
/ 22 апреля 2011

Я сделал новый проект Struts в Eclipse, используя struts2-archtype-starter.

Несколько ошибок, которые были в моем проекте, прежде чем что-то делать.Решил большинство из них, но есть еще один, который все еще вызывает у меня проблемы.

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>

Ответы [ 9 ]

45 голосов
/ 22 апреля 2011

Ошибка, которую вы видите, возможно, из-за того, что у вас неправильно настроен путь JAVA_HOME.Вы видите что-то вроде C:\{directories to jre}\..\lib\tools.jar?

Вы можете запустить eclipse, используя свой встроенный JDK, изменив eclipse.ini и добавив что-то вроде

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

.это затмение по умолчанию будет использовать вашу систему Jre для запуска затмения.Вы, вероятно, видели сообщение при запуске eclipse, похожее на «Eclipse работает под JRE, а m2eclipse требует JDK, некоторые плагины не будут работать»

Если вы зайдете (в eclipse) Help -> Сведения об установке и посмотритедля -vm вы, вероятно, увидите, что он указывает на то место, где нет ожидаемой структуры пути.

Примечание. По какой-то причине, когда я столкнулся с этой проблемой, java.home в maven был оценен с того места, где затмениебыл запущен с.Поэтому, когда он пытается вытащить tools.jar из того, что он видит как java.home, это может быть не то, что вы на самом деле задали как JAVA_HOME в качестве переменной env / system.

10 голосов
/ 15 сентября 2011
<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>
3 голосов
/ 22 апреля 2011

Вы не можете использовать tools.jar из репозитория.

К сожалению, что-то в вашем дереве зависимостей считает, что вы можете.Таким образом, вы должны использовать исключение, чтобы избавиться от существующей зависимости, а затем заменить ее следующим:

Если вы сделаете версию, указанную ниже, совпадают с версией в сообщении об ошибке, вы можетенужно "исключает".

Вам необходимо:

  <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>

2 голосов
/ 26 июля 2013

Нужно добавить еще один ответ.После обновления 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>
1 голос
/ 24 июля 2013

Если у меня недавно возникла такая же проблема, ни одно из вышеперечисленных решений не помогло мне. Я наткнулся на http://blog.samratdhillon.com/archives/598 и понял, что это ошибка Eclipse , упомянутая там.

Мне пришлось удалить все установленные jre из конфигурации Eclipse (Window -> Preferences -> Java -> Installed JREs) и оставить только один jdk. После этого maven работал нормально, без каких-либо изменений eclipse.ini или чего-либо еще. Это с Ecplise Indigo Service Release 1.

0 голосов
/ 28 ноября 2013

Основная проблема в том, что mavan не может штрафовать tool.jar. так что эта проблема возникает просто добавьте файл 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 война 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 голосов
/ 12 июля 2013

sudo apt-get install openjdk-7-source

0 голосов
/ 14 июня 2013

Путаница свойство $ {java.home} фактически разрешит его значение из переменной окружения JRE_HOME .

http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide (поискjava.home)

Если вы не хотите изменять JAVA_HOME на корень jre, то вместо этого создайте переменную JRE_HOME .

0 голосов
/ 17 декабря 2012

Пример 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

С введите описание ссылки здесь

...