0

我在 Eclipse (Juno) 中对一个大型Java 项目进行了大量重构。

当我打开上下文菜单并 Refactor > Pull up... 在某个我希望移动到超类的方法上时,我收到以下通知:

上拉不适用于此类型。所有超类型都是二进制的。

我相当肯定这是因为超类是从我的项目中当前作为 jar 编译的另一个包导入的。我当然可以编辑这个 jar 并重新编译,所以问题不在于我无法访问源代码,而是 Eclipse 无法在其他包中找到源代码。

所以我的问题:

是否有任何解决方法/解决方案?

我尝试的是手动移动方法,但是,当然,我不想这样做,否则我一开始就不会使用 Eclipse 的重构功能。最重要的是,我要移动的大多数方法都是大型方法,其中包含许多其他私有方法调用,因此 Eclipse 可以很好地为我找到这些方法并一次移动它们。代码库非常大,手动移动它们很快就会变得混乱和容易出错。

编辑

根据给出的评论和答案,似乎需要进行一些澄清。

Simon André Forsberg 的一个回答建议将“jar”项目添加到我的 java 构建路径中。这已经完成了。无论如何,我仍然收到通知。

一条评论如下:

好的。准确告诉我们希望 Eclipse 为您做什么,并提示我们Eclipse 如何根据可用信息可靠地做到这一点。– 下午 77-1

  1. 我希望 Eclipse 显示pull up...重构向导,而不是通知“上拉在此类型上不可用。所有超类型都是二进制的”。

  2. 我不知道 Eclipse 如何可靠地做到这一点。这就是我发布这个问题的原因。

4

1 回答 1

2

仅仅因为能够重新编译您的项目并导出另一个 JAR,并不意味着Eclipse知道您能够做到这一点。

如果您的工作区中有另一个包可用,那么您可以将项目添加到构建路径中,而不是先将其编译到 jar 中。如果 Eclipse 知道您想使用工作区中另一个项目的代码,那么它也将知道如何查找和操作该项目的源代码。

您应该做的是将项目添加到您的构建路径并排除 JAR 文件

此屏幕截图显示了将另一个项目添加到构建路径的位置,取自 Eclipse wiki:

用于将项目添加到构建路径的 Eclipse 对话框

于 2013-11-12T17:08:18.773 回答