微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使导入库并安装所有组件,Eclipse中的WindowBuilder也不起作用

如何解决即使导入库并安装所有组件,Eclipse中的WindowBuilder也不起作用

在我的研究中,我仅获得了关于Swing和Java GUI管理的非常简短的指导,因此我决定亲自解决此问题,并试图弄清楚如何使用Java构建美观的GUI。

在这样做的过程中,我遇到了WindowBuilder,并决定将其添加到我已经构建的项目中,当前通过控制台的用户输入(使用pIRCbot库的Twitch Bot)进行工作。但是,即使将WindowBuilder导入到我的项目中,扩展Composite并执行官方教程第一部分中显示的操作后,我仍然会收到错误消息:

未知的GUI工具包 解析器解析了编译单元,但是无法识别任何GUI工具包,因此WindowBuilder无法显示任何要编辑的GUI。这可能是由于以下原因之一造成的:

此类不是可编辑的UI类,并且不包含UI组件。 WindowBuilder无法识别此类中使用的GUI工具包或库。 WindowBuilder在支持的GUI工具包中不了解此GUI类型/模式。 类路径存在问题。例如,编译单元使用SWT类,但是SWT / JFace库不包含在类路径中。

这是堆栈跟踪:

org.eclipse.wb.internal.core.utils.exception.DesignerException: 103 (UnkNown GUI toolkit). twitchchatbot.MyBotMain
at org.eclipse.wb.internal.core.parser.JavaInfoParser.prepareParseContext(JavaInfoParser.java:1195)
at org.eclipse.wb.internal.core.parser.JavaInfoParser.parse(JavaInfoParser.java:242)
at org.eclipse.wb.internal.core.parser.JavaInfoParser.access$9(JavaInfoParser.java:238)
at org.eclipse.wb.internal.core.parser.JavaInfoParser$1.runObject(JavaInfoParser.java:153)
at org.eclipse.wb.internal.core.parser.JavaInfoParser$1.runObject(JavaInfoParser.java:1)
at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.runDesignTime(ExecutionUtils.java:159)
at org.eclipse.wb.internal.core.parser.JavaInfoParser.parse(JavaInfoParser.java:151)
at org.eclipse.wb.internal.core.editor.DesignPage.internal_refreshGEF(DesignPage.java:534)
at org.eclipse.wb.internal.core.editor.DesignPage.access$9(DesignPage.java:522)
at org.eclipse.wb.internal.core.editor.DesignPage$8$1.run(DesignPage.java:449)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
at org.eclipse.ui.internal.Uisynchronizer.syncExec(Uisynchronizer.java:146)
at org.eclipse.swt.widgets.display.syncExec(display.java:5786)
at org.eclipse.wb.internal.core.editor.DesignPage$8.run(DesignPage.java:446)
at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:436)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:469)
at org.eclipse.wb.internal.core.editor.DesignPage.internal_refreshGEF_withProgress(DesignPage.java:465)
at org.eclipse.wb.internal.core.editor.DesignPage.internal_refreshGEF(DesignPage.java:415)
at org.eclipse.wb.internal.core.editor.UndoManager.refreshDesignerEditor(UndoManager.java:381)
at org.eclipse.wb.internal.core.editor.UndoManager.activate(UndoManager.java:90)
at org.eclipse.wb.internal.core.editor.DesignPage.handleActiveState_True(DesignPage.java:263)
at org.eclipse.wb.internal.core.editor.DesignPage.handleActiveState(DesignPage.java:241)
at org.eclipse.wb.internal.core.editor.multi.DefaultMultiMode.showPage(DefaultMultiMode.java:125)
at org.eclipse.wb.internal.core.editor.multi.DefaultMultiMode$1.widgetSelected(DefaultMultiMode.java:63)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.display.sendEvent(display.java:5676)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1423)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1449)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1432)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1221)
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3193)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1876)
at org.eclipse.swt.custom.CTabFolder.lambda$0(CTabFolder.java:330)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.display.sendEvent(display.java:5676)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1423)
at org.eclipse.swt.widgets.display.runDeferredEvents(display.java:4935)
at org.eclipse.swt.widgets.display.readAnddispatch(display.java:4429)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:660)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:559)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)

这是我要在WindowBuilder中打开的类的代码

    package twitchchatbot;
import java.io.IOException;
import org.eclipse.swt.widgets.Composite;
import org.jibble.pircbot.*;

public class MyBotMain extends Composite {
    
    private String channel;
    
    public MyBotMain(Composite parent,int style) {
        super(parent,style);
        }
    
    public static void main(String[] args) {
        decideChannel();
        }
    
    public static void decideChannel() {
        connecttochannel("");
    }
    
    public static void connecttochannel(String channel) {
        MyBot bot = new MyBot(channel);
        try {
            bot.connect("irc.twitch.tv.",6667,"oauth:***");
        }
        catch(NickAlreadyInUseException e) {
            System.out.println("Username already in use!");
        }
        catch(IrcException e) {
            System.out.println("General error!");
        }
        catch(IOException e) {
            System.out.println("IO error!");
        }
   }
    @SuppressWarnings("unused")
    private void setChannel(String channel) {this.channel = channel;}
    @SuppressWarnings("unused")
    private String getChannel() {return this.channel;}
    
    @Override
    protected void checkSubclass() {
        
    }
    
}

我尝试了我能找到的大多数修复程序,但似乎都没有帮助。知道发生了什么事的人吗?

提前谢谢! :)

编辑1:按要求添加代码:)

解决方法

您扩展了需要WindowBuilder的SWT功能的SWT复合。也许您只安装了Swing支持功能。

最好的建议是使用“帮助”菜单从Eclipse Marketplace安装WindowBuilder。然后接受所有建议的选择。不要安装XWT支持。

重新启动后,设计人员应识别出GUI工具包。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。