Проблема с артефактом Maven 3
Я сделал новый проект struts в eclipse, используя stuts2-archtype-starter.
Несколько ошибок, когда в моем проекте уже было что-то делать. Решил большинство из них, но есть еще один вопрос, который все еще дает мне некоторые проблемы.
Missing artifact com.sun:tools:jar:1.5.0:system pom.xml
Я попытался вручную добавить tools.jar в свой репозиторий, но это не решило проблему.
Мой pom выглядит следующим образом
<?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>
Ответы
Ответ 1
Ошибка, которую вы видите, вероятно, потому, что у вас нет правильного пути JAVA_HOME. Вы видите что-то вроде C:\{directories to jre}\..\lib\tools.jar
?
Вы можете запустить затмение с помощью встроенного JDK, изменив eclipse.ini и добавив что-то вроде
-vm
C:\{directories to JDK}\bin\javaw.exe
Что я узнал, так это то, что eclipse по умолчанию будет использовать вашу систему jre для запуска eclipse. Вероятно, вы видели сообщение при запуске eclipse, аналогичном "Eclipse работает под JRE, а для m2eclipse требуется JDK, некоторые плагины не будут работать"
Если вы заходите в (затмение) Help → Installation Details и ищете -vm, вы, вероятно, увидите, что это указывает на то, где не существует структуры пути, которую она ожидает.
Примечание. По какой-либо причине, когда я столкнулся с этой проблемой, java.home в maven был оценен с момента запуска eclipse. Поэтому, когда он пытается вытащить tools.jar из того, что он видит как java.home, это может быть не то, что вы на самом деле устанавливаете как JAVA_HOME как переменную env/system.
Ответ 2
<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
Вы не можете использовать 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>
Ответ 4
Нужно добавить еще один ответ. После обновления 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>
Ответ 5
Недавно у меня была такая же проблема, но ни один из вышеперечисленных решений не работал у меня. Я встретил http://blog.samratdhillon.com/archives/598 и решил, что это ошибка Eclipse упоминается там.
Мне пришлось удалить все установленные jre
из конфигурации Eclipse (Window -> Preferences -> Java -> Installed JREs)
и сохранить только один jdk. После этого maven работал отлично, без каких-либо изменений до eclipse.ini
или чего-либо еще. Это с Ecplise Indigo Service Release 1.
Ответ 6
Пример 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
Из введите описание ссылки здесь
Ответ 7
Смутно свойство ${java.home} фактически разрешит его значение из переменной среды JRE_HOME.
http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide (поиск java.home)
Если вы не хотите изменять JAVA_HOME в jre root, тогда создайте вместо этого переменную JRE_HOME.
Ответ 8
Основная проблема заключается в том, что 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 война 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>
Ответ 9
sudo apt-get install openjdk-7-source