我使用JavaIDE8.2创建NetBeans程序已经有一段时间了,并且没有遇到任何问题。我试图找到一个可以让我创建JFrame的在线编译器,但我通常会得到这样的错误信息
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)我尝试了几种不同的在线编译器,并研究了X11显示,但我没有发现任何有用的东西。
import java.awt.Canvas;
import javax.swing.JFrame;
public class Main {
public static JFrame frame;
public static Canvas canvas;
public static void main(String[] args) {
createDisplay("Display", 500, 500);
}
public static void createDisplay(String title, int w, int h) {
frame = new JFrame(title);
frame.setSize(w, h);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
canvas = new Canvas();
canvas.setSize(w, h);
canvas.setFocusable(false);
frame.add(canvas);
frame.pack();
}
}有没有一种方法可以设置X11显示变量,使其在在线编译器上工作?
发布于 2019-05-02 21:53:59
您可以在无头模式中运行Java
java -Djava.awt.headless=true ...用例:单元测试,服务器端图形操作。
您也可以通过编程方式设置它(必须在执行任何需要显示的AWT调用之前设置):
System.setProperty("java.awt.headless", "true"); 请参阅:https://www.oracle.com/technetwork/articles/javase/headless-136834.html
https://stackoverflow.com/questions/55953691
复制相似问题