【问题标题】:Run Swing app from Tomcat; can't connect to X11 with DISPLAY=:0:0从 Tomcat 运行 Swing 应用程序;无法使用 DISPLAY=:0:0 连接到 X11
【发布时间】:2012-04-10 14:41:33
【问题描述】:

我有一个想要在 Tomcat 6 JVM 中运行的小型 Swing 监控应用程序。该应用程序通过从运行在 Tomcat 下的 Web 服务动态加载监控类来启动。这适用于 Windows,但在 Linux (Ubuntu 10.4) 上我遇到了一些错误。

我的第一个错误是我遇到了 HeadlessException。我没有明确使用无头模式,在四处搜索后,我更改了 Tomcat 的库路径(通过 catalina.sh 中的 -Djava.library.path)指向客户端库(即 .../java-6-sun-1.6 .0.26/jre/lib/i386/client) 而不是服务器库。我还在 catalina.sh 中设置了 DISPLAY=:0:0。这摆脱了无头异常,但现在我得到了:

java.lang.InternalError: Can't connect to X11 window server using ':0:0' as the value of the DISPLAY variable.
sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
sun.awt.X11GraphicsEnvironment.access$100(X11GraphicsEnvironment.java:52)
sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:155)
java.security.AccessController.doPrivileged(Native Method)
sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:169)
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
java.awt.Window.init(Window.java:380)
java.awt.Window.<init>(Window.java:433)
java.awt.Frame.<init>(Frame.java:403)
java.awt.Frame.<init>(Frame.java:368)
javax.swing.JFrame.<init>(JFrame.java:158)
com.quinsoft.zeidon.objectbrowser.ObjectBrowser.startup(ObjectBrowser.java:60)

此时我被卡住了。我尝试了很多不同的东西(比如明确设置“headless = false”并为 DISPLAY 使用不同的值)并且没有任何变化。有人有什么想法吗?

版本信息:

  • Tomcat 6.0.28
  • Java 1.6
  • Ubuntu 10.4

【问题讨论】:

  • 作为后续,感谢 Tomcat 用户电子邮件列表,我能够运行它。出于某种原因,我(还)不明白将 Tomcat 作为服务运行会阻止它连接到 X 服务器。如果我直接使用 startup.sh 运行 Tomcat,那么 Swing 应用程序将毫无问题地启动。如果我了解更多信息,我会更新。

标签: swing tomcat


【解决方案1】:

如果您还没有尝试过,请尝试设置“-Djava.awt.headless=true”。

【讨论】:

  • 我不认为我想要无头模式,因为我想运行一个 GUI(即 Spring)应用程序,它们不会在无头模式下运行。
  • 在这种情况下,请确保您已经启动了x-server,然后再调用tomcat。
  • 我的 x-server 正在运行,所以我怀疑 Tomcat 的设置中有一些东西阻止它找到它。我假设出于安全原因 Tomcat 会自动安装,但无法运行 X 应用程序。
  • 您是否已经尝试将 DISPLAY 设置为 server_name:0.0 或 ip_address:0.0 ?还要确保 x-server 没有阻塞任何连接。
  • 在网上阅读有关此问题的内容指向相同的选项“-Djava.awt.headless=true”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 2017-02-05
相关资源
最近更新 更多