我有一个linux守护进程,它为在系统上登录的每个用户启动一个java实例。
我使用下面的命令为每个用户启动java应用程序:
cd /home/user/java_path/ && sudo -u user /opt/jdk1.7.0_17/java -jar software.jar &java应用程序监视文件夹,并在创建新文档时打开验证框架。每个java应用程序只读取用户文件(通过名称模式)。当试图打开一个框架时,但是我得到了这个错误(在日志中):
没有设置X11显示变量,但是这个程序执行了一个需要它的操作。 java.awt.HeadlessException:...
当我在常规命令行(终端)中执行java应用程序时,这很好。
我还看到了导出变量,使用导出-p命令和显示变量对所有登录的用户都是正常的。
发布于 2013-06-04 16:52:04
密码起作用了。为了解决这个问题,我需要导出java变量,然后按照如下顺序启动java应用程序: cd路径&导出DISPLAY=:0.0 &导出USERNAME=用户& sudo -u用户javapath/java -jar app.jar >/dev/null 2>&1
发布于 2013-05-15 15:39:54
有些java类依赖于有显示设备,如果您没有任何(没有X服务器的运行),它们就会失败,从而导致所得到的错误。使用以下参数运行java:
-Djava.awt.headless=true更多信息在这里:http://www.oracle.com/technetwork/articles/javase/headless-136834.html
发布于 2013-05-15 15:41:47
使用System.setProperty("java.awt.headless", "true");或-Djava.awt.headless=true JVM arg
https://stackoverflow.com/questions/16569364
复制相似问题