当前位置: 首页 > 知识库问答 >
问题:

在不显示的情况下在Ubuntu服务器上部署JavaFX

景俊拔
2023-03-14

我正在使用jdk1开发一个JavaFX应用程序。7.0_51在Netbeans的Mac OS X(10.9.1)上。我可以毫无问题地运行它,在一个干净的构建之后,我还可以从dist/文件夹启动jar。

现在我想把它部署在64位Ubuntu 13.04服务器上。我在这方面遇到了很多问题,但最终还是设置了服务器,使其具有正确的JRE、字体和库。运行jar会导致比我的代码更深的错误(指向提到MACOS的本机库的不满意链接),所以我认为最好在Ubuntu上打包我的应用程序。最后,我安装了NetBeans来创建一个新的(本机的)JavaFX项目,并使用sftp从我的机器上传了src/和lib/文件夹。在NetBeans中通过重建的项目运行代码效果很好,不过在运行期间,我在控制台中收到了一条警告:

libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
Prism-ES2 Error : GL_VERSION (major.minor) = 1.4

不管怎样,应用程序会运行。在一个干净的构建之后,我可以类似地从dist/文件夹中运行jar。同样的警告出现在终端中,但是应用程序会启动。

但是,如果我在没有-X标志的情况下使用ssh连接到服务器,并尝试运行应用程序,我会得到以下结果:

Failed in XOpenDisplay
(java:29341): Gtk-WARNING **: cannot open display: 

但是,我的应用程序没有UI。它只是将JavaFX用于WebEngine(这是必需的,无法更改)。我想知道是否有人知道是否(如果是,如何)可以在不显示的情况下启动我的JavaFX jar(只是作为服务器上的守护进程运行)。

问候你华克斯特

编辑:

我尝试了这里描述的一些事情:Java无法使用“localhost:10.0”作为DISPLAY变量的值连接到X11窗口服务器

You need to specify the -Djava.awt.headless=true parameter at startup time.

(假设我使用命令java-Djava.awt.headless=true-jar MyApp.jar)做得对,这不会产生任何结果(同样的错误也会发生)。

export DISPLAY=:0

仍然没有结果,尽管错误明显略有改变,现在改为:

(java:30765): Gtk-WARNING **: cannot open display: :0

最后,我还尝试了以下方法:

unset DISPLAY

这导致了最初的错误(显然没有设置显示)。

共有2个答案

岳浩
2023-03-14

我也有同样的问题

Failed in XOpenDisplay
(java:2593): Gtk-WARNING **: cannot open display:

在Travis CI上的无头Ubuntu docker容器中运行JavaFX应用程序的单元测试时。

解决方案是在容器中安装X虚拟帧缓冲区(xvfb),以模拟通过中的容器配置更改显示的内容。特拉维斯。yml

before_script:
  - "export DISPLAY=:99.0"
  - "sh -e /etc/init.d/xvfb start"
  - sleep 3 # give xvfb some time to start

这允许JavaFX成功初始化其核心并创建JavaFX组件,而无需在屏幕上实际显示它们。

有关此解决方案的详细信息,请参阅使用xvfb运行需要GUI的测试的文章

杨豪
2023-03-14

我不认为JavaFX 2. x支持在无头模式下运行。我不知道任何解决方法。

有关更多信息,请参阅JavaFX issue tracker功能请求:RT-34241在无头系统中使用WebEngine,目前计划在Java 9中实现。

 类似资料:
  • 我部署成功了,但在我做了之后。我无法访问“状态”和“用户”的配置部分。我不确定我应该从哪里开始解决这些问题。 将Spree::admin::StatesController#索引处理为HTML 参数:{“country_id”=>“214”}在16ms内完成了500个内部服务器错误

  • 我有两个不同的内部wildfly下拖子系统,以便在不同的ip上使用两个接口,并为不同的域发送不同的ssl证书 通过在接口和套接字绑定上使用这个配置和其他配置,我正确地设置了我的环境。 但是问题是在host server.mydomain.com内的default-server_secondary中部署EAR文件。 怎么做? 谢谢。

  • 我是新来的jboss服务器。我有jboss 4.2.3服务器。我在单个服务器上有很多应用程序。我需要在不重启jboss服务器的情况下部署我的应用程序。有可能吗?如果是这样,有哪些选择? 提前谢谢!!

  • 本文向大家介绍在ubuntu中部署samba服务器的方法,包括了在ubuntu中部署samba服务器的方法的使用技巧和注意事项,需要的朋友参考一下 Samba服务在Ubuntu服务器版本中默认并没有安装。今天公司上了一批新电脑,准备把它装成服务器,于是为了方便开发的使用,我在上面部署了一个samba,用来实现window和linux的联系: 具体步骤,我详细的查看了百度,高手云集,以下就是总结了网

  • 我试图通过访问“每个实例的站点指标”来衡量我的一个Azure应用程序服务的CPU使用率。问题是,除了CPU时间和其他诸如“平均内存工作集”和“数据输入/输出”之类的内容外,没有其他选项可以检查CPU使用情况。 有人知道我如何以及在哪里可以看到一个应用程序服务的CPU使用情况吗?

  • 我想使用docker容器,而不必使用弹性beanstek或ec2容器服务。我想上传一个描述容器的文件(就像您对弹性beanstek所做的那样),并让一个通用的ec2实例使用docker运行它。 当查看运行docker容器的beanstalk创建的ec2实例的用户数据部分时,我看到一个cloud init脚本,它下载一个完成所有设置的大型shell脚本(示例)。我假设elastic beanstal