如何在Eclipse中编辑Maven依赖项中的`.class`文件

好吧,所以我有我的Java项目,在项目浏览器的Maven依赖项目文件夹下,我遇到一个jar文件夹,其中有一个.class文件。 现在,我点击了Download Sources ,我可以将.class文件视为Java文件,但我无法在Eclipse中编辑它。

我该怎么办?

您无法编辑.class文件。 您只能编辑源代码中包含的java文件并重新编译。

maven下载的maven source plugin是在给定时间由给定项目的maven source plugin生成的项目SNAPSHOT,以帮助调查代码,但肯定不会修改它。

这些源可以绑定到类路径并用于在IDE中导航项目源,但它们仍然是只读的。

您无法直接编辑jar和源jar。 您需要下载源代码并进行编辑。 然后,您必须完成构建过程以重新构建jar,并将其作为新版本安装在maven存储库中。

类文件是编译后的二进制文件,准备成为可执行程序的一部分。

修改它们是修改编译的源代码的一种技术。 你可能不想那样做。 如果要生成替换项,请下载整个项目并重新编译。

您可能有义务根据此类行为执行某些其他事项,根据法律,您必须遵守软件的许可,并重新编译和重新分发(如果您必须重新编译,这将是您将要做的事情)往往会增加更多的负担开发人员而不仅仅是“使用”(取决于许可)。

如前所述,您无法修改.class文件。 您可以通过以下方式下载依赖项的源java文件(如果可用):

 mvn dependency:sources mvn dependency:resolve -Dclassifier=javadoc 

(我们遇到了同样的问题,但经过一些调整之前它已经有效了,我们花了很长时间才弄明白这一点……)

我们的(典型的EAR原型)目录结构:

 [projx] |- [ejb] |- pom.xml ...  1.0-SNAPSHOT   ... |- [web] |- pom.xml ... 2.0.1-SNAPSHOT ...  ... projx-ejb ejb   provided  ... |- [ear] |- pom.xml ... 2.0.1-SNAPSHOT ... |- pom.xml  ... 2.0.1-SNAPSHOT ...  ejb web ear  ... 

所以问题是我们忘了增加[ejb]/pom.xml//project/version ))在调整它之后类似于B) (我们实际上引用了一个全局[projx]/pom.xml//project/properties/projx.version属性),它再次像魅力一样工作

(如果我们已经明确地依赖于较旧的,例如`projx-ejb-1.0.3.Final.jar,JAR版本,我们本可以采用C)方法,当然工作空间分辨率再次无法正常工作,正确。)