Apache Batik 1.7 WMFTranscoder抛出的HeadlessException

时间:2014-08-21 08:54:44

标签: java java-ee exception awt batik

我在Java桌面应用程序(NetBeans中的JUnit测试)中成功使用此代码,以从WMF数据生成SVG:

InputStream wmfStream = new ByteArrayInputStream(wmfBytes);
WMFTranscoder transcoder = new WMFTranscoder();
TranscoderInput wmf = new TranscoderInput(wmfStream);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
TranscoderOutput svg
        = new TranscoderOutput(new OutputStreamWriter(bos, "UTF-8"));
transcoder.transcode(wmf, svg);
return bos.toByteArray();

如果我在GlassFish中执行转换,则抛出无头异常:

  

java.awt.HeadlessException at   sun.awt.HeadlessToolkit.getScreenResolution(HeadlessToolkit.java:224)     在   org.apache.batik.transcoder.ToSVGAbstractTranscoder。(ToSVGAbstractTranscoder.java:96)     ......还有33个

如何在无头'中使用Apache Batik WMF进行SVG转换? Java运行时环境?


接受的答案Having problems with Apache Batik library on AWS ElasticBeanstalk Instance建议使用Sun JDK。但是,我已经在Oracle JDK 1.7 u 65上运行了GlassFish 4.0.1。

2 个答案:

答案 0 :(得分:0)

据推测,WMF使用无头环境无法提供的字体等。没有头脑的意思,没有GUI(X服务器)的(Linux)服务器,依赖于字体渲染和其余部分。安装X服务器Linux软件包应该这样做。

在debian alikes下

apt-get install x-window-system

所以“对于一个服务器的格言不需要图形窗口管理器”的格言不幸是不正确的。

答案 1 :(得分:0)

实际上很容易解决 - 至少在我的开发机器上,需要将GlassFish配置(domain.xml)更改为设置

<jvm-options>-Djava.awt.headless=false</jvm-options>

现在使用x-window-system在Linux上进行测试,稍后将返回结果。