7

我正在处理一些使用 AWT 和 Swing 功能将动画输出写入桌面的代码。它使用 2D 图形绘制并以字体呈现文本。

此代码可以使用 Java Media Framework 将动画保存为电影文件。

我想将此代码移植到纯服务器端环境,以使用 Web UI。绘图代码既可以在 servlet 容器内运行,也可以在外部作为命令行程序运行。(或者我可以选择不使用 servlet 容器,而是使用从命令行运行 Java Web 服务器的新方法。)

我可以在不启动服务器上的 X Window 系统的情况下使用 AWT 和 Swing 绘图功能吗?

4

1 回答 1

14

在 Java SE 平台中使用无头模式一文概述了对此类应用程序施加的限制。

一个具体的例子JFreeChart是广泛用于桌面和 servlet 上下文的图形程序。对于后者,ChartUtils可以使用几种中的任何一种在无头环境中流式传输渲染的内容。

或者,尽管已弃用,但请考虑使用Java Web Start来部署现有的 Swing 应用程序,例如此处JFreeChart看到的演示。

附录:这个 Oracle 论坛主题表明 Java 媒体框架确实可以抛出HeadlessException; 建议的解决方法是指定特定的系统属性值:

-Dawt.toolkit=sun.awt.HeadlessToolkit

当模式不可用时,此JFreeChart论坛主题建议Xvfbvnc作为替代方案。headless

于 2012-12-21T07:19:46.950 回答