【问题标题】:Maven 3 Artifact problemMaven 3 工件问题
【发布时间】:2011-04-22 14:10:08
【问题描述】:

我使用 struts2-archtype-starter 在 eclipse 中创建了一个新的 struts 项目。

在我做任何事情之前,我的项目中已经出现了一些错误。解决了大部分问题,但有 1 个仍然给我一些问题。

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>

【问题讨论】:

标签: java eclipse struts2 m2eclipse maven-3


【解决方案1】:

您看到的错误可能是因为您没有正确设置 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 时,它可能不是您实际设置为 JAVA_HOME 作为环境/系统变量的内容。

【讨论】:

  • 您要确保它在 -vmargs 之前放置在正确的位置,并且您可能需要在该位置周围加上引号(即 Program Files...)。我会花时间尝试让它工作,因为我相信它会解决你的问题。
  • 没问题!我不得不自己花一些时间来让它工作:)
  • 谢谢,这为我省去了一些麻烦。
  • +1。节省了我一些时间。简单说明一下:您可能需要在设置真正起作用之前清理工作区。
  • 今天遇到了类似的问题,我想在一些 java 更新之后。更改 eclipse.ini 有帮助,但我更改的是 -Dosgi.requiredJavaVersion=1.6-Dosgi.requiredJavaVersion=1.7
【解决方案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 bug

      我不得不从 Eclipse 的配置 (Window -&gt; Preferences -&gt; Java -&gt; Installed JREs) 中删除所有已安装的 jre,并且只保留一个 jdk。之后,maven 工作得很好,没有对eclipse.ini 或其他任何东西进行任何修改。这适用于 Ecpise 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
        

        来自enter link description here

        【讨论】:

          【解决方案7】:

          令人困惑的是,${java.home} 属性实际上会从 JRE_HOME 环境变量中解析其值。

          http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide(搜索 java.home)

          如果您不想将 JAVA_HOME 更改为 jre 根目录,请改为创建 JRE_HOME 变量。

          【讨论】:

            【解决方案8】:

            主要问题是 ma​​van 无法精细化 tool.jar。所以出现这个问题 您只需在您的项目中添加 tool.jar 文件。Java 软件中存在的 Tool.jar C:\Program Files\Java\jdk1.6.0_14\lib
            试试这段代码我希望你成功运行 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 信任2测试 信任2测试 0.0.1-快照 战争 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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2022-07-15
                • 2016-02-17
                • 2012-05-22
                • 2011-04-30
                • 1970-01-01
                • 2012-12-21
                • 2015-07-13
                • 1970-01-01
                相关资源
                最近更新 更多