运行 JAXB/XJC 在 Dockerfile 中产生 GConf 错误

Running JAXB/XJC in Dockerfile yields in GConf Error

我将 docker 与 Java 项目结合使用 这是在构建过程中编译的。 现在我正在尝试基于 Collada 生成 Java 代码 XML 架构版本 1.5 通过调用以下 shell 脚本 在 Dockerfile 中:

BASEDIR=$(dirname [=12=])
xjc $BASEDIR/schema/collada/collada-schema-1.5.xsd \
    -d $BASEDIR/knowrob_vis/src/main/java \
    -p org.knowrob.vis.collada \
    -extension $BASEDIR/schema/simpleMode.xsd

不幸的是,这会产生以下错误:

(process:4093): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
GConf Error: No D-BUS daemon running

在我的主机上生成 Java 代码工作正常。 您可以在此处找到 Dockerfile:https://raw.githubusercontent.com/knowrob/docker/master/hydro-knowrob/hydro-knowrob-daemon_local/Dockerfile

编辑1: 似乎 xjc 有一些奇怪的 XServer 依赖项。 这对我来说没有意义。 如何避免这个问题?

我解决了这个问题。 其实DBus报错可以忽略

问题是对xjc所在的目录没有写权限 尝试生成文件。 通过将所有权切换到 Dockerfile 中使用的用户来修复它。