为什么Eclipse插件代码不能从外部java swing应用程序调用swingworking线程?

为什么Eclipse插件代码不能从外部java swing应用程序调用swingworking线程?,java,eclipse,swing,swingworker,Java,Eclipse,Swing,Swingworker,我已经实现了一个独立的java应用程序,它使用swing framework for GUI。作为GUI的一部分,单击按钮后会出现一个JTextArea,在后台处理作业后会在JTextArea中追加一些文本。我使用的是SwingWorker库,因为我不想让我的jtextarea冻结这个应用程序,而且它工作得很好。所以作业代码就在重写的doInBackground中 我所面临的问题是,当我作为Eclipse插件的一部分启动此GUI应用程序时。我用swing应用程序构建了一个jar,并向Eclips

我已经实现了一个独立的java应用程序,它使用swing framework for GUI。作为GUI的一部分,单击按钮后会出现一个JTextArea,在后台处理作业后会在JTextArea中追加一些文本。我使用的是SwingWorker库,因为我不想让我的jtextarea冻结这个应用程序,而且它工作得很好。所以作业代码就在重写的doInBackground中

我所面临的问题是,当我作为Eclipse插件的一部分启动此GUI应用程序时。我用swing应用程序构建了一个jar,并向Eclipse工作台添加了一个扩展。开始时,应用程序正确启动,但当应用程序流到达调用swingworker的点时,这个特定的jtextarea被冻结了,什么也没有发生。我的Swingworker的doInBackground()函数中的代码似乎没有被调用。 我在eclipse pugin代码中启动应用程序,如下所示:

SwingUtilities.invokeLater(new Runnable() {public void run() {
              new MainFrame.setVisible(true);
          }
      });
其中,MAinFrame是java程序的JFrame类。
您知道为什么会发生这种情况吗?

您是否尝试过使用Runtime.exec()调用外部程序


您可能知道,将Eclipse SWT/Jface和Swing混合使用是一个困难的话题。

在同一个过程中混合使用SWT和AWT/Swing UI并不容易。它们需要不同的事件循环。您的代码被冻结,因为Awt/Swing事件循环没有在Eclipse进程中运行。您可以在SWT中重新编写UI,也可以研究SWT-AWT桥。这座桥“正常”,但有许多小故障。它实际上只适用于存在大量AWT/Swing的情况,并且在将UI移植到SWT时需要临时解决方案