好吧,我有我的Java項目,並且在項目瀏覽器中的Maven依賴項目文件夾下,我遇到一個jar
文件夾,並且在其中有一個.class
文件。現在,我點擊Download Sources
,我可以將.class
文件視爲Java文件,但我無法在Eclipse中對其進行編輯。如何在Eclipse中編輯Maven依賴關係中的`.class`文件
我該怎麼辦?
好吧,我有我的Java項目,並且在項目瀏覽器中的Maven依賴項目文件夾下,我遇到一個jar
文件夾,並且在其中有一個.class
文件。現在,我點擊Download Sources
,我可以將.class
文件視爲Java文件,但我無法在Eclipse中對其進行編輯。如何在Eclipse中編輯Maven依賴關係中的`.class`文件
我該怎麼辦?
您無法編輯.class
文件。您只能編輯源代碼中包含的java
文件並重新編譯。
maven
下載的來源是maven source plugin
在給定時間爲給定項目生成的項目SNAPSHOT,用於幫助調查代碼,但肯定不會修改它。
這些源可以綁定到類路徑並用於在IDE中瀏覽項目源,但它們仍然是隻讀的。
你甚至不能編輯.class文件如果您有權訪問源代碼。您只能重新編譯源代碼。 – 2013-02-26 21:45:20
@JeffStorey但仍然無法將.class文件編輯爲java文件?這就是我的意思。爲什麼要投票? – 2013-02-26 21:46:16
我不關注。你不能編輯類文件(不修改字節碼)。如果你的意思是你可以重新編譯源代碼,那麼你應該這麼說。 – 2013-02-26 21:47:41
您無法直接編輯罐子和源罐。你需要下載源代碼並編輯它。然後,您必須經過構建過程來重新構建jar,並將其作爲新版本安裝到您的maven存儲庫中。
類文件是編譯好的二進制文件,可以作爲可執行程序的一部分。
修改它們是修改已編譯源代碼的技巧。你可能不想這樣做。如果您想要生成替換,請下載整個項目並重新編譯它。
在這樣的行爲下,您可能有義務做其他事情,法律規定您必須遵守軟件許可,並重新編譯和重新分發(如果您必須重新編譯,您將會這樣做)開發人員的負擔比「使用」(取決於許可)要重得多。
是的,軟件和項目屬於我,我總是在Eclipse中重建項目。 – bouncingHippo 2013-02-26 21:44:12
如果依賴軟件和它的項目屬於你,爲什麼你在重新編譯它的問題?更改上游依賴項(上游Maven項目)並重新發布。可能性是您的項目對其他項目有依賴性,並且替代原來的其他項目將違反Maven在不同機器上重現結果的所有能力。 – 2013-02-26 22:47:12
如前所述,您不能修改.class文件。如果有通過你可以下載依賴的源java文件:
mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc
(我們有同樣的問題,但它已經經過了一些調整工作之前,我們花了不少時間來想出解決辦法... )
我們(典型EAR原型)目錄結構:
[projx]
|- [ejb]
|- pom.xml
...
<!-- A) PROBLEM: dependency resolution can't work in [web]/src/**/* -->
<version>1.0-SNAPSHOT</version>
<!-- B) OK: this is what we (and probably you) wanted -->
<!-- <version>2.0.1-SNAPSHOT</version> -->
...
|- [web]
|- pom.xml
...
<version>2.0.1-SNAPSHOT</version>
...
<dependency>
<groupId>...</groupId>
<artifactId>projx-ejb</artifactId>
<type>ejb</type>
<!-- C) a specific older version here would help it as well
if you need it -->
<!-- <version>1.0.3.Final</version> -->
<scope>provided</scope>
</dependency>
...
|- [ear]
|- pom.xml
...
<version>2.0.1-SNAPSHOT</version>
...
|- pom.xml
<project ...>
...
<version>2.0.1-SNAPSHOT</version>
...
<modules>
<module>ejb</module>
<module>web</module>
<module>ear</module>
</modules>
...
所以問題是,我們忘了增加[ejb]/pom.xml//project/version
(A))。 調整後類似於B)(我們其實參考了全球[projx]/pom.xml//project/properties/projx.version
屬性),它再次工作就像一個魅力。 (如果我們已經明確地依賴於較老的,例如`projx-ejb-1.0.3.Final.jar,JAR版本,我們可以去C)方法,當然這裏的工作空間解析會再次不正常工作)。
(如果我們仔細查看打開的類文件(在CTRL + RIGHT-CLICK),我們會看到它正在尋找一個不同版本的jar {{user.home} /。m2 /.../ projx-ejb-1.0.3.Final.jar!/ ...'在我們的本地maven回購):-) – 2015-08-31 10:15:52
爲什麼你認爲你應該可以編輯它? – Cephalopod 2013-02-26 21:39:38
@Cephalopod:因爲他在這裏陳述:http:// stackoverflow。com/questions/15099790 /如何編輯class-file-in-maven-dependency-in-eclipse#comment21243106_15099901依賴於項目是他自己的(在工作區中) – 2015-08-31 09:41:27