从Tomcat运行Swing应用程序;无法连接到显示为:0:0的X11

从Tomcat运行Swing应用程序;无法连接到显示为:0:0的X11,swing,tomcat,Swing,Tomcat,我有一个小的Swing监控应用程序,我想在Tomcat6JVM中运行。该应用程序是通过从运行在Tomcat下的Web服务动态加载监控类来启动的。这在Windows下可以工作,但在Linux Ubuntu 10.4上我遇到了一些错误 我的第一个错误是,我有一个无头的例外。我没有显式地使用headless模式,在四处搜索之后,我通过catalina.sh中的-Djava.library.path更改了Tomcat的库路径,以指向客户端库,即..../java-6-sun-1.6.0.26/jre/l

我有一个小的Swing监控应用程序,我想在Tomcat6JVM中运行。该应用程序是通过从运行在Tomcat下的Web服务动态加载监控类来启动的。这在Windows下可以工作,但在Linux Ubuntu 10.4上我遇到了一些错误

我的第一个错误是,我有一个无头的例外。我没有显式地使用headless模式,在四处搜索之后,我通过catalina.sh中的-Djava.library.path更改了Tomcat的库路径,以指向客户端库,即..../java-6-sun-1.6.0.26/jre/lib/i386/client,而不是服务器库。我还在catalina.sh中设置DISPLAY=:0:0。这消除了headless异常,但现在我得到:

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,使用不同的值进行显示,什么都不改变。有人有什么想法吗

版本信息:

Tomcat 6.0.28 Java 1.6 Ubuntu 10.4
如果您还没有尝试过,请尝试设置“-Djava.awt.headless=true”。

我不想使用headless模式,因为我想运行GUI ie.Spring应用程序,它们不会在headless模式下运行。在这种情况下,请确保先启动x-server,然后调用tomcat。我的x-server正在运行,所以我怀疑Tomcat的设置中有某种东西阻止它找到它。我假设出于安全原因,Tomcat是自动安装的,没有运行X应用程序的能力。您是否已尝试将显示设置为服务器名称:0.0或ip地址:0.0?另外,请确保x-server没有阻塞任何连接。在网上阅读有关此问题的内容时,会返回到相同的选项“-Djava.awt.headless=true”。作为后续操作,由于Tomcat用户的电子邮件列表,我能够运行此功能。出于某种原因,我还不明白,将Tomcat作为服务运行会阻止它连接到X服务器。如果我直接使用startup.sh运行Tomcat,那么Swing应用程序将毫无问题地启动。如果我了解更多,我会更新。