Java Struts2不包括com.sun:tools:jar:1.5.0必需吗?
我不熟悉Struts2 每当我包含Struts2依赖项时,为什么我必须这样做Java Struts2不包括com.sun:tools:jar:1.5.0必需吗?,java,maven,struts2,Java,Maven,Struts2,我不熟悉Struts2 每当我包含Struts2依赖项时,为什么我必须这样做 <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts.version}</version> <exclusio
<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>
出现此错误时:
Missing artifact com.sun:tools:jar:1.5.0
这是一种方法还是有更好的方法
我注意到这个问题发生在版本2.1.6和更高版本中 工件
com.sun:tools:jar:1.5.0
是来自JDK(而不是JRE)的jar。此jar在任何maven存储库中都不可用,但位于/lib
中。这就是为什么会出现这个错误
当您指定排除时,maven不会尝试查找jar(因此不会失败)
(不是在运行时)
因此,设置排除是解决此问题的正确方法。因为maven需要一个JDK来运行:tools.jar在编译项目时仍然可用。工件
com.sun:tools:jar:1.5.0
是来自JDK的jar(不是JRE)。此jar在任何maven存储库中都不可用,但位于/lib
中。这就是为什么会出现这个错误
当您指定排除时,maven不会尝试查找jar(因此不会失败)
(不是在运行时)
因此,设置排除是解决此问题的正确方法。因为maven需要一个JDK来运行:tools.jar在编译项目时无论如何都是可用的。您不需要这样做
这样做表明Eclipse、Eclipse项目和/或Eclipse Maven插件配置中存在问题。作为比较,我基本上为每个版本都有S2项目,在任何pom中我都不需要排除Java tools jar,而且从来没有排除过。您不需要这样做
这样做表明Eclipse、Eclipse项目和/或Eclipse Maven插件配置中存在问题。作为比较,我基本上每个版本都有S2项目,在任何pom中我都不需要排除Java tools jar,而且从来没有排除过。问题解释 实际上,struts2依赖于一个系统依赖项,即
tools.jar
。通过解析以下路径可以找到此依赖项:${java.home}/./lib/tools.jar
如果使用maven编译项目,maven将足够聪明,可以用正确的JDK位置替换${java.home}
出于某种原因,如果您尝试使用eclipse(即通常使用m2e帮助)编译mavenized项目,${java.home}
将根据-vm
eclipse命令行参数进行解析
解决方案 如果要解决此问题,请不要排除
tools.jar
。相反,强制您的eclipse使用您喜爱的JDK以以下任一方式运行(因为我不知道您的操作系统,所以我将以操作系统不可知的形式给出示例):
- 命令行开关
- eclipse.ini
/路径/to/jdk/bin/javaw
在Windows上查看此示例。已解释问题 实际上,struts2依赖于一个系统依赖项,即
tools.jar
。通过解析以下路径可以找到此依赖项:${java.home}/./lib/tools.jar
如果使用maven编译项目,maven将足够聪明,可以用正确的JDK位置替换${java.home}
出于某种原因,如果您尝试使用eclipse(即通常使用m2e帮助)编译mavenized项目,${java.home}
将根据-vm
eclipse命令行参数进行解析
解决方案 如果要解决此问题,请不要排除
tools.jar
。相反,强制您的eclipse使用您喜爱的JDK以以下任一方式运行(因为我不知道您的操作系统,所以我将以操作系统不可知的形式给出示例):
- 命令行开关
- eclipse.ini
/路径/to/jdk/bin/javaw
在Windows上查看此示例。这很奇怪,我在几个项目中使用了Struts 2,我不记得必须排除这个com.sun.tools JAR。。。您使用的是什么版本的Struts2?您是在命令行中使用Maven还是作为Eclipse/Intellij插件使用?@PierreHenry我使用的是Maven插件。低于2.1.6的版本没有给出此错误。如果您从命令行生成(没有排除),它是否也会给出此“缺少工件”错误?您可以在不排除任何内容的情况下解决此问题:这很奇怪,我在几个项目中使用了Struts 2,我不记得必须排除此com.sun.tools JAR。。。您使用的是什么版本的Struts2?您是在命令行中使用Maven还是作为Eclipse/Intellij插件使用?@PierreHenry我使用的是Maven插件。低于2.1.6的版本不会出现此错误。如果从命令行生成(不排除),是否也会出现此“缺少工件”错误?您可以在不排除任何内容的情况下解决此问题:那么OP应该怎么做?debelopers应该做些什么来避免这个问题?@Alex OP应该包含更多信息,这样人们可以重现错误;我不能。我最近遇到了同样的问题,下面是我如何解决的:。你会注意到我没有排除任何东西;)那我们该怎么办?debelopers应该做些什么来避免这个问题?@Alex OP应该包含更多信息,这样人们可以重现错误;我不能。我最近遇到了同样的问题,下面是我如何解决的:。你会注意到我没有排除任何东西;)设置排除不是正确的方法!改为勾选这个答案:@Alex我不同意链接的答案。这是关于一个特定于eclipse的问题。这里的问题是关于maven的。我认为你是错的
Missing artifact com.sun:tools:jar:1.5.0