此类型不提供上拉功能。所有超类型都是二进制的

时间:2013-11-12 17:03:14

标签: java eclipse jar refactoring

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

当我打开上下文菜单并重构>拉起......对于某种方法,我想转移到超级班,我收到以下通知:

  

这种类型无法提升。所有超类型都是二进制的。

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

所以我的问题:

有没有解决方法/解决方案?

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

修改

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

SimonAndréForsberg的一个答案建议将“jar”项目添加到我的java构建路径中。这已经完成了。我仍然会收到通知。

一条评论写道:

  

行。告诉我们您希望Eclipse为您做的确切 ,并给我们一个提示如何 Eclipse可以根据可用信息可靠地做到这一点。 - PM 77-1

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

Eclipse dialog for adding project to build path