我有一个 linux 守护进程,它为每个登录系统的用户启动一个 java 实例。
我使用以下命令为每个用户启动 java 应用程序:
cd /home/user/java_path/ && sudo -u user /opt/jdk1.7.0_17/java -jar software.jar &
java 应用程序监视一个文件夹并在创建新文档时打开一个框架进行身份验证。每个 java 应用程序只读取用户文件(按名称模式)。当试图打开一个框架时,我得到了这个错误(在日志中):
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
java.awt.HeadlessException: ...
当我在常规命令行(终端)中执行 java 应用程序时,效果很好。
我还看到了导出变量,使用 export -p 命令,显示变量对于所有登录的用户都是正常的。
最佳答案
某些 java 类依赖于显示设备,如果您没有(在没有 X 服务器的情况下运行),它们将失败并出现您收到的错误。 使用以下参数运行 java:
-Djava.awt.headless=true
更多信息在这里: http://www.oracle.com/technetwork/articles/javase/headless-136834.html
关于当我使用 linux 守护进程启动 java 时出现 Java headless 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16569364/