java.lang.NoClassDefFoundError : sun/awt/X11GraphicsEnvironment issuses faced while running our applet based app on linux 错误

标签 java

我们在扩展 javax.swing.JApplet 的应用程序中构建了 applet。最近我们一直面临的问题 X11GraphicsEnvironment 在 linux 环境中运行时,浏览各种论坛,我们通过在 run.conf 文件的 JAVA_OPTS 中设置 -Djava.awt.headless=true 来解决这个问题。

但这会导致 HeadlessException。

最初我们的客户告诉我们在终端中使用命令 ssh -X 启动应用服务器,它曾经工作正常,但现在需要丢弃它。

提前致谢...

最佳答案

您确定 java.awt.headless 属性正确进入您的环境吗?您的小程序是否出于某种原因打算在 headless 环境中运行?这是一个快速示例应用程序,演示了该标志的作用:

import java.awt.GraphicsEnvironment;

public class GETest {
  public static void main(String[] args) {
    GraphicsEnvironment ge = 
      GraphicsEnvironment.getLocalGraphicsEnvironment();

    System.out.println("class: " + ge.getClass());
    System.out.println("isHeadless:" + ge.isHeadless());
  }
}

当我在没有标志的 Linux 中运行它时:

$ java GETest
class: class sun.awt.X11GraphicsEnvironment
isHeadless:false

当我在带有标志的 Linux 中运行它时:

$ java -Djava.awt.headless=true GETest
class: class sun.java2d.HeadlessGraphicsEnvironment
isHeadless:true

此外,如果我取消设置 DISPLAY,并且在没有标志的情况下运行,我会得到异常:

$ unset DISPLAY
$ java -Djava.awt.headless GETest
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
    at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
    at sun.awt.X11GraphicsEnvironment.access$100(X11GraphicsEnvironment.java:52)
    ...

如果我随后设置标志,我将获得与上面 isHeadless:true 示例中相同的输出。

您应该更全面地描述您的环境,这将有助于诊断您的问题。

关于java.lang.NoClassDefFoundError : sun/awt/X11GraphicsEnvironment issuses faced while running our applet based app on linux 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1687898/

相关文章:

java - 我的 Spring-MVC ContentNegotiatingViewResolver 设置是否正确?如何为不受支持的媒体类型发送 404 错误?

java - 将 Azure AD 集成到 Java Web 应用程序中。如何破解 Azure AD

java - 在 VSCODE 中调试 Java 项目

java - .wav 文件可以播放,但 .aiff 文件不能播放

java - 从字符串创建二维数组

java - 新的构造函数和函数

java - Android 外部库项目上的 NoClassDefFoundError

java - Maven 编译器插件空指针

c# - 恶霸算法

jax-rs - 为什么我无法访问 JAX-RS api?