在linux X11问题中使用java.awt库
我正在尝试使用 Xuggle 组合一组在线可用图像来创建视频。我使用 JSP 和 Java 将其实现为服务。我正在使用 tomcat 服务器。当我将它部署到在 Windows 中运行的本地服务器时,它工作正常。但是当我将它部署到 Linux 服务器时,我收到以下错误。
org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11.XToolkit
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
我猜这是在没有显示器的环境中发生的无头问题。 有人可以告诉我如何解决这个问题吗? 我在网上发现PJA工具包
可以解决这个问题。但是我如何在Linux中使用它呢?如果有人遵循这种方法,请给我关于如何在 Linux 中使用它的分步说明。
I am trying to create a video by combining a set of images available online using Xuggle. I implemented it as a service using JSP and Java. I'm using the tomcat server. When I deploy it in my local server which runs in windows, it works fine. But when i deploy it to the linux server im getting the following error.
org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11.XToolkit
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
I guess it's the headless problem which occurs in environments without a display.
Can someone tell me how to solve this problem ?
I found online that PJA toolkit
can solve this problem. but how do i use this in linux? if anyone has followed this approach can you please give me step by step instructions on how to use this in linux.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我设法解决了这个问题。当 UNIX 机器(也称为无头环境)上没有可用的 X11 Display 或 Windows 上的 GDI 资源不足时,在 JDK 版本 << 的情况下,无法使用 java.awt.Graphics 方法计算离屏图像。 1.4,即使你的程序不需要显示这些图像。通常,这种情况发生在 Servlet 返回动态生成的图像(如饼图、图表或 Web 计数器)时。
如果您的 JDK 版本<1.4,请升级它,因为在 JDK 1.4 中此问题已得到解决。然后您需要启用无头模式。它是这样完成的:
如果您使用的是 Linux,请输入
导出CATALINA_OPTS =“-DJava.awt.headless = true”
到 /etc/profile 文件。
希望这可以帮助遇到同样问题的其他人。
I managed to solve this problem. When no X11 Display is available on a UNIX machine (also called headless environment) or when GDI resources are low on Windows, it is impossible to compute off-screen images with java.awt.Graphics methods under a JDK version < 1.4, even if your program doesn't need to display these images. Typically, this situation happens for servlets returning dynamically generated images like pies, charts or web counters.
If your JDK version is <1.4 upgrade it, because in JDK 1.4 onwards this problem is solved. And then you need to enable the headless mode. This is how it is done:
If you are in Linux, enter
export CATALINA_OPTS="-DJava.awt.headless=true
to the /etc/profile file.
Hope this would help someone else who comes across the same problem.