繁体   English   中英

Eclipse无法重构重命名

[英]Eclipse can't refactor rename

我有带Java的Eclipse Oxygen。 我可以重构某些变量,但是自从我更新到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)

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

这看起来像Eclipse错误525842

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM