引自stackoverflow
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true"
http://stackoverflow.com/questions/3628302/jasperreports-noclassdeffounderror-exception-on-net-sf-jasperreports-engine-util
Finally, I’ve got it working. I detected the root Exception, which was thrown before NoClassDefFoundError:net/sf/jasperreports/engine/util/JRStyledTextParser :
1
|
<
span
class
=
"pln"
>
java
<
/
span
>
<
span
class
=
"pun"
>
.
<
/
span
>
<
span
class
=
"pln"
>
lang
<
/
span
>
<
span
class
=
"pun"
>
.
<
/
span
>
<
span
class
=
"typ"
>
NoClassDefFoundError
<
/
span
>
<
span
class
=
"pun"
>
:
<
/
span
>
<
span
class
=
"pln"
>
sun
<
/
span
>
<
span
class
=
"pun"
>
/
<
/
span
>
<
span
class
=
"pln"
>
awt
<
/
span
>
<
span
class
=
"pun"
>
/
<
/
span
>
<
span
class
=
"pln"
>
X11GraphicsEnvironment
<
/
span
>
|
The Sun AWT classes on Unix and Linux have a dependence on the X Window System. When you use these classes, they expect to load X client libraries and be able to talk to an X display server. This makes sense if your client has a GUI; unfortunately, it’s required even if your client uses AWT but does not have a GUI (which is my case, generating a report from a web application)
The way to bypass this, is setting a system property java.awt.headless=true
on system startup.
在tomcat 可以修改catalina.sh 类似:
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true"