我试图从drake/automotive/automotive_demo.cc
中分离出一些代码。作为第一步,我尝试将automotive_demo.cc
和automotive_demo.py
复制到不同名称的文件(test.cc
和test.py
)中,然后运行bazel run automotive:test -- --num_simple_cars=1
。我修改了automotive/BUILD.bazel
和test.py
以考虑新的依赖关系。
问题是在我bazel run
之后,模拟器窗口打开但没有汽车被渲染。最终它只是崩溃了以下错误:
[lcm-spy] ClassDiscoverer: java.lang.NoClassDefFoundError: apple/laf/AquaPopupMenuUI
[lcm-spy] jar: ../com_jidesoft_jide_oss/jide-oss-2.9.7.jar
[lcm-spy] class: com/jidesoft/plaf/aqua/AquaJidePopupMenuUI.class
...
[drake_visualizer] Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication.
...
[lcm-spy] LCM: Disabling IPV6 support
[lcm-spy] LCM: TTL set to zero, traffic will not leave localhost.
[lcm-spy] java.net.SocketException: Can't assign requested address
这是一个(未解决的)Github issue,指出问题是test
是一个"自定义插件"。但是,如果automotive_demo
能够正常运作,那么肯定有一种方法可以为test
重现这种行为吗?我还尝试了grep
ping QGuiApplication并且只发现了一系列二进制文件,因此我不知道如何遵循错误消息的建议。
答案 0 :(得分:0)
在Mac上尝试您的步骤时,我很遗憾无法重现您的具体错误。我不认为将bazel run automotive:demo -- --num_simple_car=1
作为目标名称会导致问题(至少我没有遇到问题)。
请你确定:
automotive_demo.*
?test.*
重命名为BAZEL.build
后,在test.py
,demo
个文件中,以下内容已正确映射:test
- > automotive_demo
和test_cc
- > Character.forDigit()
(或您选择的任何唯一名称)?