如何在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)方法,当然工作空间分辨率再次无法正常工作,正确。)