Eclipse在容器中工作得很好,它的窗口在主机上是可见的(X11通过socket共享)。
该应用程序是一个使用JavaFX(Efxclipse和M2Eclipse)的Eclipse RCP项目。我删除了下面RCP的所有引用,以减少示例中的复杂性,并且因为它也发生在真正简单的JavaFX应用程序(非OSGI)中--所以OSGI不是发行方。
在Eclipse(在Docker容器内)中运行JavaFX GUI应用程序时会发生以下致命错误。
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f56bb14dd20, pid=233, tid=0x00007f567cea1700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_111-b14) (build 1.8.0_111-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.111-b14 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [ld-linux-x86-64.so.2+0x9d20]
#
# Core dump written. Default location: /home/docker/test/JavaFX/login/core or core.233
#
# An error report file with more information is saved as:
# /home/docker/test/JavaFX/login/hs_err_pid233.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
完整的日志可以在这里找到。
主机详细信息:
JavaFX应用程序的代码:
package application;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Scene scene = new Scene(new BorderPane(),400,400);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
虽然我成功地使用Swing运行了一个简单的GUI应用程序:
package application; import javax.swing.JFrame; import javax.swing.JLabel; public class Test { private static void createAndShowGUI() { JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500, 500); JLabel label = new JLabel("Test"); frame.getContentPane().add(label); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
这就引出了一些与JavaFX有关的问题。
谢谢
这个问题与我的Ubuntu映像中缺少的依赖项有关。没有它们,我就无法在Docker容器中运行JavaFX应用程序。
安装以下软件包解决了该问题:
gtk2-engines libswt-gtk-3-java libxslt1.1 libxtst6 libxxf86vm1
我试图只安装其中的一个或两个(一种组合),试图找出哪一个是确切需要的,但结果证明这是耗时的,所以我现在安装所有他们。
DockerFile-- pom.xml--
docker错误: PS C:\Windows\System32>docker运行测试错误:出现JNI错误,请检查线程“main”java.lang.noClassDeffounderRorr:javax/JMSException在java.lang.Class.GetDeclaredMethods0(本机方法)在java.lang.Class.GetDeclaredMethods(class.j
我在我的项目中创建了以下Dockerfile来容器化Spring app 无论我是否尝试在ADD./spring-boot-app.jar/app/app.jar中提供jar文件的完整项目路径,仍然会导致以下错误- 但是当运行命令docker-compose up时,它没有将spring boot app容器与mysql容器链接起来,并给出通信链接失败错误。这可能是因为Dockerfile入口点。
错误:container_linux.go:247:启动容器进程导致“exec:\”-w\“:在$path中找不到可执行文件”c:\program files\docker toolbox\docker.exe:来自守护进程的错误响应:oci运行时错误:container_linux.go:247:启动容器进程导致“exec:\”-w\“:在$path中找不到可执行文件”。
我在一个容器中运行Kafka,希望能够运行一个简单的命令来更改Java应用程序(Spring Boot)主题上的分区数。 我尝试过ProcessBuilder,但从我读到的任何错误消息来看,我无法通过ProcessBuilder来完成。 相反,我尝试查看Docker API,但无法理解/找到任何解决方案。 我想做的是:运行:docker exec-it kafka bash,然后在kafka容器内
我已经创建了一个docker映像来测试Angular应用程序,但是我无法在docker容器内从主机连接到正在运行的应用程序。 该图像是使用带有:EXPOSE 4200 8080 80的Dockerfile创建的 我使用命令运行docker容器:docker run-ti-p 4200:4200angulardev/bin/bash 在容器内部,我创建了Angular应用程序,并使用:ng serv