在linux X11问题中使用java.awt库

发布于 2024-10-25 04:48:03 字数 842 浏览 3 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱人如己 2024-11-01 04:48:03

我设法解决了这个问题。当 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文