好的,所以我有我的Java项目,在项目浏览器的Maven依赖项目文件夹下,我遇到了一个jar
文件夹,其中有一个.class
文件。现在,我点击Download Sources
,我可以将.class
文件视为Java文件,但我无法在Eclipse中编辑它。
我该怎么办?
答案 0 :(得分:2)
您无法编辑.class
个文件。您只能编辑源代码中包含的java
个文件并重新编译。
由maven
下载的源是maven source plugin
在给定时间为给定项目生成的项目SNAPSHOT,以帮助调查代码,但肯定不会修改它。
这些源可以绑定到类路径并用于在IDE中导航项目源,但它们仍然是只读的。
答案 1 :(得分:0)
您无法直接编辑jar和源jar。您需要下载源代码并进行编辑。然后,您必须完成构建过程以重新构建jar,并将其作为新版本安装在maven存储库中。
答案 2 :(得分:0)
类文件是编译后的二进制文件,准备成为可执行程序的一部分。
修改它们是修改已编译源代码的一种技术。你可能不想这样做。如果要生成替换项,请下载整个项目并重新编译。
您可能有义务在此类行为下做某些其他事情,依法通行,您必须遵守软件的许可,并重新编译和重新分发(如果您必须重新编译,这将是您将要做的事情)开发人员的负担比“使用”更重(取决于许可)。
答案 3 :(得分:0)
如前所述,您无法修改.class文件。您可以通过以下方式下载依赖项的源java文件:
mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc
答案 4 :(得分:0)
(我们遇到了同样的问题,但经过一些调整之前它已经有效了,我们花了很长时间来弄明白这一点......)
我们的(典型的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)方法,当然工作空间分辨率再也不会工作,正确。)