【问题标题】:Java Headless exception while draw image绘制图像时出现 Java Headless 异常
【发布时间】:2016-03-25 17:56:13
【问题描述】:

我需要像这样在服务器端修改图像(调整大小+添加文本):

BufferedImage tmp = new BufferedImage(image.getWidth() + 50, image.getHeight() + 100, BufferedImage.TYPE_INT_RGB);
Graphics graphics = tmp.getGraphics();
graphics.fillRect(0, 0, canvas.getWidth(), 40);
graphics.drawImage(image, 0, 40, null);
graphics.setFont(graphics.getFont().deriveFont(25f));
graphics.setColor(Color.red);
graphics.drawString(textImage, 20, 30);
graphics.dispose();

但是,我得到了这个错误

Caused by: java.awt.HeadlessException

有什么我忘记了吗?在本地运行正常,但在 Linux 服务器上出现上述错误。

感谢您的帮助。

编辑:或者是否有解决方法来避免这种无头异常?

EDIT2:好的,我从服务器获取了日志:

Caused by: java.awt.HeadlessException
    at sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(HeadlessGraphicsEnvironment.java:64)

以前有人尝试过这样做

GraphicsConfiguration config = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
BufferedImage tmp = config.createCompatibleImage(image.getWidth() + 50, image.getHeight() + 100, BufferedImage.TYPE_INT_RGB);

【问题讨论】:

  • 在哪一行? textImage 是什么?
  • @mauretto BufferedImage tmp = new BufferedImage(image.getWidth() + 50, image.getHeight() + 100, BufferedImage.TYPE_INT_RGB);图形图形 = tmp.getGraphics();
  • @user2363971 textImage,最后一行。 BTW Berger 回复了你。
  • @mauretto textImage = "图片居中文本" - 只是字符串

标签: java swing drawimage headless


【解决方案1】:

我之前在没有图形环境的 Linux 服务器上安装 war 应用程序时遇到了这个错误。

使用-Djava.awt.headless=true 启动jvm 应该可以解决您的问题。请记住,如果您的代码在应用服务器中运行,您将需要使用该参数修改应用服务器 VM。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 2011-10-12
    • 2020-08-17
    相关资源
    最近更新 更多