2009-05-06 78 views
7

我正在使用Eclipse 3.4.2来开发我的代码。作为我的项目定义的一部分,我参考了一个附加源代码的实用程序库。到目前为止,这么好 - 当我从库中调出类并且正在调试的时候,我可以看到这个源代码。Eclipse:是否可以编辑通过源代码“附件”知道的Java源码

但现在我想对其中一个类进行更改,同时仍保留Eclipse Java编辑器的所有功能(特别是工具提示和快速修复)。当我查看源代码时,这些功能似乎可行(我可以按CTRL + LClick通过方法名称),但它是只读的。另一方面,我可以明确地打开源文件,这将允许我编辑它,但是我失去了所有“智能”编辑功能。

我最近从IntelliJ切换到了Eclipse,这是可能的,所以我希望它也是在Eclipse中。请注意,虽然我可以简单地将代码作为项目包含在工作区中,但我真的不想。工作区已经很大,我不想通过添加我很少碰到的项目来进一步减慢Eclipse的速度。

回答

7

我不确定我的问题是否正确。将预编译库添加到项目构建路径(JAR)并将源附加到此JAR时,Eclipse将在您单击JAR内的.class时向您显示源代码。调试器也是如此,如果JAR中的类是使用行号信息编译的,那么它也允许您单步执行源代码行。

现在你似乎想要做的就是修改JAR中的类(源视图只是一个覆盖层,如果你附加不同版本的源代码,它甚至可以关闭),这是不可能的,因为它们以二进制形式封装在JAR存档中 - 即使Eclipse足够聪明以单独显示它们。

我想你会希望你的改变被调试器热插入正在运行的程序中。这只能在完成更改后通过重新编译完成。通常,Eclipse会在保存Java源文件时自动执行此操作。因为您的源文件不是工作区的一部分(或者显式声明为Java源的外部文件夹) - 它不会执行重新编译和交换。

我建议在Eclipse中将外部库的源代码作为项目包含进来,而不要担心性能太高 - 我每天使用3.4.2,并且我的工作区有大约45个打开的项目,其中有几个10.000类,数百万行代码。我为Eclipse VM分配了一个千兆字节的RAM,并且在Core2Duo 2.6GHz机器上没有问题。

+0

这并不是说我期望Eclipse在我运行系统时对系统进行的任何更改进行“热插拔”。我告诉Eclipse从该JAR中获得类的“内置”形式,我期望它能够做到这一点(就像它那样)。如果我决定需要编辑一些我偶然以二进制形式包含的类,它实际上只是一个Java编辑器提供的所有“帮助”的问题。尽管我们知道大小限制 - 我们的代码库基本相同,它会扼杀IntelliJ。 – sfitts 2009-05-06 17:31:47

相关问题