Grails中pdf生成中的NoClassDefFoundError异常

时间:2014-02-13 16:28:45

标签: java exception grails plugins pdf-generation

在我的Grails应用程序中,我使用pdf插件来创建pdfs。 当我尝试创建pdf时,会引发以下异常:

there was a problem with PDF generation java.lang.NoClassDefFoundError: 
Could not initialize class sun.awt.X11FontManager

对于这种特殊情况,这种例外的原因是什么? 请注意,该机器具有1.7.0_45版本的Java,我正在使用带有UI的Ubuntu。

编辑: 我尝试过使用Java 1.7.0_17的另一台机器,它可以工作。两个版本的Java之间是否存在差异,或者它取决于Ubuntu版本之间的差异?

编辑2: 我试图在无头模式下运行Java,但我有另一个例外:

java.lang.UnsatisfiedLinkError: /opt/jdk1.7.0_60/jre/lib/i386/libfontmanager.so: libgcc_s.so.1

是运行以前工作的Java版本(如1.7.0_17)的唯一解决方案,还是可以用其他方式解决它?

2 个答案:

答案 0 :(得分:2)

在非gui环境(即未安装X11的Linux服务器)中运行时使用AWT类时,通常会发生此错误。您可以使用JVM选项强制Java在“无头模式”下运行:

-Djava.awt.headless=true

这是您可以添加到grails run-app使用的GRAILS_OPTS环境变量中的内容。或者,如果您在Tomcat或类似产品下运行,则可以将此JVM选项添加到启动脚本中。

答案 1 :(得分:1)

如前所述,NoClassDefFoundError很多时候意味着类路径中的一个类错过了另一个类(它依赖于它)。

换句话说,你有一个依赖于B类的A类,但是在你的类路径中你只有A类。所以你可以毫无问题地编译,但是在运行时JVM找不到类B,这是让A类工作所需的