所有
我在下面使用此代码来显示使用Java Swing的窗口。问题是当我在eclipse中运行代码时窗口没有显示。当我将文件导出为可执行的JAR文件并运行它时,它可以工作。 eclipse是否存在阻止它从那里运行的错误?
如果有人可以告诉我我错过了什么,我将不胜感激。
package com.gui;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.BorderLayout;
public class Calculator {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Calculator window = new Calculator();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Calculator() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
//frame.setBounds(100, 100, 450, 300);
frame.setSize(400, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel lblNewLabel = new JLabel("Hello World");
frame.getContentPane().add(lblNewLabel, BorderLayout.NORTH);
}
}
答案 0 :(得分:1)
在macOS中,Eclipse / WindowBuilder创建的某些项目存在此窗口未显示的问题。
通过“新建”>“项目”>“ WindowBuilder”>“ SWT Designer”>“ SWT / JFace Java Project”创建应用程序时,新项目将自动在类路径中包含几个额外的jar文件。启动应用程序时,某些jar文件会触发eclipse以在命令中使用特殊参数(-XstartOnFirstThread
来查找特殊字符(ps aux | grep
),而startOnFirstThread
在这里给我们带来了问题。 AFAIK,-XstartOnFirstThread
仅在MacOS中添加。
解决方案1:不要使用“ WindowBuilder> SWT Designer> SWT / JFace Java项目”来创建项目。您可以只创建一个常规的Java项目,然后添加所需的内容。
解决方案2:删除jar文件。右键单击项目>属性>构建路径>配置构建路径>库,删除org.eclipse.swt(在我的情况下,删除这个就足够了,在您的情况下可能还有其他内容)。
答案 1 :(得分:0)
我遇到了同样的问题,这对我有用(在stackoverflow上的一些人的帮助下)。
事实证明我有图书馆问题。我从jfreechart导入了.lib目录中的所有jar。实际上只需要两个,一些不必要的标记为swt和experimental。一旦我删除了所有不需要的东西,干净,重建,一切都运行正常。
奇怪的是,将jfreechart库(包括冲突的罐子)的顺序更改为底部没有帮助,必须删除额外的罐子。
不是jfreechart问题,显然是我自己的库导入问题。因此,我建议您尝试删除一些可能存在冲突的库,然后再清理,构建和运行。祝好运。