簡體   English   中英

Struts2是否需要com.sun:tools:jar:1.5.0?

[英]Struts2 exclude com.sun:tools:jar:1.5.0 required?

我是Struts2的新手。

每當包含Struts2依賴項時,為什么都必須這樣做?

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

如果我不這樣做, Eclipse Juno此時會給我錯誤。

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
 http://maven.apache.org/maven-v4_0_0.xsd

出現此錯誤:

Missing artifact com.sun:tools:jar:1.5.0

是這樣做的方法還是有更好的方法?

我注意到此問題發生在2.1.6版和更高版本中。

工件com.sun:tools:jar:1.5.0是來自JDK(不是JRE)的jar。 此jar在任何Maven存儲庫中均不可用,但位於<JDK_HOME>/lib 這就是為什么您會收到此錯誤。

當您指定排除項時,maven不會嘗試查找jar(因此它不會失敗)。

Struts2在編譯時 (而不是在運行時) 需要此依賴項

因此,設置排除規則是解決此問題的正確方法。 由於maven需要一個JDK才能運行:在編譯項目時,總可以使用tools.jar。

您不需要這樣做。

您所做的指示表明Eclipse,Eclipse項目和/或Eclipse Maven插件配置中存在問題。 相比之下,我基本上每個版本都有S2項目,並且毫無疑問,我不需要排除Java工具jar,而且從來沒有。

問題說明

實際上,發生的事情是struts2依賴於系統依賴性,即tools.jar 可通過以下路徑找到此依賴關系: ${java.home}/../lib/tools.jar

如果使用maven編譯項目,則maven將足夠聰明,可以用正確的JDK位置替換${java.home}

由於某些原因,如果嘗試使用eclipse編譯經過Maven處理的項目(即通常使用m2e幫助),則會針對-vm eclipse命令行參數來解析${java.home}


如果要解決此問題,請不要排除tools.jar 相反,可以通過以下兩種方式強制Eclipse與您最喜歡的JDK一起運行( 由於我不了解您的操作系統,因此我將以與操作系統無關的形式提供示例 ):

  • 命令行開關

/ path / to / eclipse -vm / path / to / jdk / bin / javaw

在Windows上查看該SO答案以獲取示例。

  • 的eclipse.ini

-vm
/路徑/到/ JDK /斌/ javaw進程

在Windows上查看該SO答案以獲取示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM