java - 如何使用代码将一个或多个包正确地 move 到java中的另一个包中

标签 java package move eclipse-jdt

我正在开发一个应用程序 [桌面 swing 应用程序],它需要我通过代码进行重构。 [我知道 eclipse IDE 已经提供了界面和功能但我需要通过代码来完成

我需要做的重构的第一阶段是 move 选定的包 [选择的选项是通过复选框给出的,该复选框使用 JDT 的思想在工作区中显示所有可用的包。我在这个位置使用了教程:http://www.vogella.de/articles/EclipseJDT/article.html ]

现在我已经选择了我希望 move 到另一个包的包,

这段代码我用过

233.   for (IPackageFragment mypackage : packages) {
234.                    if ((mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) && (searchifSelected(mypackage.getElementName())==true) ){
235.                        IJavaElement container = newModule.getPrimaryElement();
236.                        mypackage.move(container, null, null, true, null);
                }
     }

searchifSelected(mypackage.getElementName())==true 告诉我是否选择了要 move 的特定包

IJavaElement container = newModule.getPrimaryElement(); 是将包含所选包的容器[新包]

mypackage.move(container, null, null, true, null); 据我阅读,此命令应该将“mypackage”作为“子项” move 到“容器” .

但是,我遇到了这个问题:

 Java Model Exception: Java Model Status [Invalid destination: 'devFromSupplier [in src [in test]]']
at org.eclipse.jdt.internal.core.MultiOperation.processElements(MultiOperation.java:175)
at org.eclipse.jdt.internal.core.CopyResourceElementsOperation.processElements(CopyResourceElementsOperation.java:417)
at org.eclipse.jdt.internal.core.MultiOperation.executeOperation(MultiOperation.java:90)
at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:728)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:793)
at org.eclipse.jdt.internal.core.JavaModel.runOperation(JavaModel.java:297)
at org.eclipse.jdt.internal.core.JavaModel.move(JavaModel.java:258)
at org.eclipse.jdt.internal.core.PackageFragment.move(PackageFragment.java:420)
at newmodulewizrd.ui.Integrate.printPackageInfos(Integrate.java:236)
at newmodulewizrd.ui.Integrate.printProjectInfo(Integrate.java:177)
at newmodulewizrd.ui.Integrate.getWorkSpace(Integrate.java:149)
at newmodulewizrd.ui.Integrate.moveToOneModule(Integrate.java:120)
at newmodulewizrd.ui.Integrate$1.actionPerformed(Integrate.java:79)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

我认为这意味着我给出了错误的论点。

有人可以帮助我该怎么办吗?

最佳答案

我在 eclipse 论坛 [我正在使用的 IDE] 上发布了这个问题,然后发现这个问题/bug 与它在循环中不起作用的方法有关。您将必须逐一显式调用此函数。此链接中也报告了类似的错误:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=240286 [w.r.t 删除方法]

关于java - 如何使用代码将一个或多个包正确地 move 到java中的另一个包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315238/

相关文章:

java - Python 到 java 的转换

java - 在 Android 中获取 WOEID

java - antlrworks中导入数据包的问题

python - 如何升级Python以及已安装的软件包?

c++ - 为什么这个 move 构造函数不起作用

excel - 通过 .Copy() 创建一个新的 Excel 工作表并将其 move 到最后一个位置

Javafx 实时线程更新

java - 当文本包含换行符时,JTextPane 中的显着性能差异

python - Python 标准库包/模块不在名为 python 的包中是有原因的吗?

c++ - 同一对象的双 move 是从左向右复制吗?