Eclipse无法重构重命名

时间:2018-04-02 14:52:02

标签: eclipse

我有Eclipse Oxygen with Java。我可以重构一些变量但是因为我更新到Java 9它不再重构某些名称,比如接口的方法,但它可以重构其他类型的名称或变量。它会在错误日志中产生此内部错误:

java.nio.channels.ClosedByInterruptException
at java.base/java.nio.channels.spi.AbstractInterruptibleChannel.end(Unknown Source)
at java.base/java.nio.channels.Channels$ReadableByteChannelImpl.read(Unknown Source)
at jdk.internal.jrtfs.JrtFileSystem$1.read(JrtFileSystem.java:376)
at java.base/sun.nio.ch.ChannelInputStream.read(Unknown Source)
at java.base/sun.nio.ch.ChannelInputStream.read(Unknown Source)
at java.base/sun.nio.ch.ChannelInputStream.read(Unknown Source)
at java.base/java.nio.file.Files.read(Unknown Source)
at java.base/java.nio.file.Files.readAllBytes(Unknown Source)
at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.getClassfileBytes(JRTUtil.java:330)
at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.getClassfileContent(JRTUtil.java:311)
at org.eclipse.jdt.internal.compiler.util.JRTUtil.getClassfileContent(JRTUtil.java:153)
at org.eclipse.jdt.internal.core.AbstractClassFile.getClassFileContent(AbstractClassFile.java:187)
at org.eclipse.jdt.internal.core.ClassFile.getJarBinaryTypeInfo(ClassFile.java:226)
at org.eclipse.jdt.internal.core.ClassFile.getBinaryTypeInfo(ClassFile.java:187)
at org.eclipse.jdt.internal.core.ClassFile.buildStructure(ClassFile.java:75)
at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:259)
at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:583)
at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:320)
at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:306)
at org.eclipse.jdt.internal.core.BinaryType.getClassFileInfo(BinaryType.java:230)
at org.eclipse.jdt.internal.core.BinaryType.getChildren(BinaryType.java:193)
at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType(JavaElement.java:275)
at org.eclipse.jdt.internal.core.BinaryType.getMethods(BinaryType.java:462)
at org.eclipse.jdt.internal.corext.util.MethodOverrideTester.findOverriddenMethodInType(MethodOverrideTester.java:195)
at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2$2.visit(JavadocContentAccess2.java:837)
at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2$InheritDocVisitor.visitInheritDoc(JavadocContentAccess2.java:203)
at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.findAttachedDocInHierarchy(JavadocContentAccess2.java:856)
at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:550)
at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:757)
at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:675)
at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:667)
at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:164)
at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:130)
at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:86)
at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166)

它只是重命名,但会立即撤消重构操作。

2 个答案:

答案 0 :(得分:0)

这看起来像Eclipse bug 525842

此错误的修复目前计划在Eclipse Oxygen.3a(4.7.3a)中,将于4月11日(2018年)发布。

答案 1 :(得分:0)

这可能是Eclipse中的错误。我有同样的问题,但是我找到了解决方案/解决方法:

选择包含要重命名方法的界面,然后按F4键显示 接口的类型层次结构。

在类型层次结构中,您将在底部窗格中看到界面的所有方法。 选择一个您想重命名的名称,右键单击它,然后进行refactor-rename。 对我来说,它重命名了该方法的所有实现。