从 Eclipse 运行时未出现 Java JFrame 窗口

Posted

技术标签:

【中文标题】从 Eclipse 运行时未出现 Java JFrame 窗口【英文标题】:Java JFrame Window not appearing when run from Eclipse 【发布时间】:2014-11-15 01:23:25 【问题描述】:

一个非常简单的问题。我尝试运行一个非常简单的演示来从 Eclipse 创建和显示一个窗口框架,但没有任何反应。没有错误,没有窗口,代码运行完成。

我添加了断点并确保代码按预期运行。代码直接来自 Java 教程 (FrameDemo),我只是重命名了包以适合我放置它的位置(此包中的其他代码运行良好):

package ui;

import java.awt.*;
import javax.swing.*;

/* FrameDemo.java requires no other files. */
public class FrameDemo 
    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() 
        //Create and set up the window.
        JFrame frame = new JFrame("FrameDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JLabel emptyLabel = new JLabel("");
        emptyLabel.setPreferredSize(new Dimension(175, 100));
        frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    

    public static void main(String[] args) 
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() 
            public void run() 
                createAndShowGUI();
            
        );
    

我的设置(Kepler SR2):

eclipse.buildId=4.3.2.M20140221-1700 java.version=1.8.0_05 java.vendor=甲骨文公司 BootLoader 常量:OS=macosx、ARCH=x86_64、WS=cocoa、NL=en_US 框架参数:-product org.eclipse.epp.package.java.product -keyring /Users/steve/.eclipse_keyring -showlocation 命令行参数:-os macosx -ws cocoa -arch x86_64 -product org.eclipse.epp.package.java.product -keyring /Users/steve/.eclipse_keyring -showlocation

我还检查了配置 -> 错误日志;仍然没有,没有错误。我尝试了其他类似的演示,结果相同。

任何帮助将不胜感激,因为我已经坚持了一天多。

【问题讨论】:

它应该显示,因为我看不出代码有什么问题。您是否尝试过从头开始重新加载 Eclipse? 您是否尝试过使用不同的 IDE 或从终端运行它? @Vince - 将其导出到 jar 中,然后从终端运行它,弹出窗口。 不,不重启,重新安装。从头开始。 @user4061565:不,我不建议你这样做,因为这个网站主要是为了回答这些问题。相反,请尝试为您自己的问题写一个清晰的答案,然后发布,然后在时间限制允许后接受。这是我们在这里想要和需要的东西(我认为),因为您这样做可能会帮助未来的用户,这就是它的全部意义。 【参考方案1】:

原来我遇到了图书馆问题。我已经从 jfreechart 导入了 .lib 目录中的所有 jar。实际上只需要两个,一些不必要的被标记为 swt 和实验性的。一旦我删除了所有不需要的,清理并重建,一切正常。

奇怪的是,将 jfreechart 库(包括冲突的 jar)的顺序更改到底部并没有帮助,必须删除额外的 jar。

不是 jfreechart 问题,显然是我自己的库导入问题。如果您遇到这种情况,我建议您尝试删除一些可能有冲突的库,然后清理、构建并再次运行。

感谢 Hovercraft Full Of Eels 以及所有响应帮助我的人。

【讨论】:

有趣!我遇到了同样的问题。从来没有想过如何进口比需要更多的罐子可能会导致这种情况。无论如何,不​​错的收获! 非常正确。我有类似的问题。我的应用程序没有启动,当我运行时什么也没发生。从参考库中删除了 jfreechart-1.0.19-swt.jar,一切顺利!!! OMG - 我刚刚遇到了同样的问题,并认为我要疯了。删除了 SWT 和景气上的“外部 jar dep” - 出现了摆动窗口...【参考方案2】:

macOS + Eclipse + swt.jar 给出了这个问题。

事实证明,在 macOS 中,如果类路径中有 swt.jar,Eclipse 在启动 GUI 应用程序时会添加一个特殊参数 -XstartOnFirstThread。从外部库(用于构建类路径)中删除 swt.jar 后,问题解决了。

【讨论】:

以上是关于从 Eclipse 运行时未出现 Java JFrame 窗口的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse/Maven:运行 JUnit 测试时未编译它们

Eclipse:CSV 解析标准输入时未检测到 EOF

Eclipse / Maven:JUnit测试在运行时未编译

Eclipse Neon 上的目标运行时未列出 Tomcat 服务器

JDK14的新特性:JFR,JMC和JFR事件流

JDK14的新特性:JFR,JMC和JFR事件流