在Linux上运行Java FX 2.0应用程序时出现空白屏幕

所以,我刚开始玩Linux上的Java FX,因为开发者预览终于出来了。 我正在关注该网站上的第一个示例( JavaFX入门 ),并且一切似乎都正常运行。 但是,运行示例时,我所得到的只是一个空白窗口。

我已经检查过,以确保我正在使用JDK7u3中包含的JRE for Linux。

奇怪的是我在运行这个例子时没有遇到任何例外或者问题,我只是得到了什么都不做的空白窗口。 我甚至可以为舞台设置一些属性,比如设置标题或大小,并且反映这些变化; 但场景中没有显示,甚至没有背景颜色。

有没有人有任何想法,我可能做错了什么?

更新:感谢您的回复; 这是代码和截图,Sergey。 我删除了大部分的例子,只留下舞台创作:

public class UITest extends Application { @Override public void start(Stage mainStage) { try { Group root = new Group(); Scene scene = new Scene(root, 400, 300, Color.RED); mainStage.setScene(scene); mainStage.show(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } } 

这显示了这个窗口。

我使用Ubuntu 11.10并在Eclipse上运行示例。

带有-Dprism.verbose = true参数的输出是:

 Prism pipeline init order: es2 j2d Using t2k for text rasterization Using dirty region optimizations Prism pipeline name = com.sun.prism.es2.ES2Pipeline Loading ES2 native library ... succeeded. (X) Got class = class com.sun.prism.es2.ES2Pipeline **** GL_ARB_pixel_buffer_object detected **** Initialized prism pipeline: com.sun.prism.es2.ES2Pipeline RESIZE: 6378396429620 w: 432 h: 1 Created GL2ES2: com.sun.prism.opengl.impl.gl2.GL2Impl@132e1b6 GL_VENDOR: NVIDIA Corporation GL_RENDERER: Quadro FX 350M/PCI/SSE2 GL_VERSION: 2.1.2 NVIDIA 280.13 GL_EXTENSIONS: GL_ARB_color_buffer_float GL_ARB_copy_buffer GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_get_program_binary GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_map_buffer_range GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_provoking_vertex GL_ARB_robustness GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_objects GL_ARB_shading_language_100 GL_ARB_shading_language_include GL_ARB_shadow GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_non_power_of_two GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transpose_matrix GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_texture_float GL_ATI_texture_mirror_once GL_S3_s3tc GL_EXT_texture_env_add GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_Cg_shader GL_EXT_depth_bounds_test GL_EXT_direct_state_access GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_object GL_EXT_gpu_program_parameters GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_pixels GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_shader_objects GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_sRGB GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_EXT_x11_sync_object GL_EXT_import_sync_object GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_KTX_buffer_region GL_NV_alpha_test GL_NV_blend_minmax GL_NV_blend_square GL_NV_complex_primitives GL_NV_copy_depth_to_color GL_NV_depth_clamp GL_NV_fbo_color_attachments GL_NV_fence GL_NV_float_buffer GL_NV_fog_distance GL_NV_fragdepth GL_NV_fragment_program GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_framebuffer_multisample_coverage GL_NV_half_float GL_NV_light_max_exponent GL_NV_multisample_filter_hint GL_NV_occlusion_query GL_NV_packed_depth_stencil GL_NV_pixel_data_range GL_NV_point_sprite GL_NV_primitive_restart GL_NV_register_combiners GL_NV_register_combiners2 GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_texture_compression_vtc GL_NV_texture_env_combine4 GL_NV_texture_expand_normal GL_NV_texture_lod_clamp GL_NV_texture_rectangle GL_NV_texture_shader GL_NV_texture_shader2 GL_NV_texture_shader3 GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_program GL_NV_vertex_program1_1 GL_NV_vertex_program2 GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_NVX_conditional_render GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object GL_OES_vertex_half_float GL_SGIS_generate_mipmap GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow GL_SUN_slice_accum RESIZE: 6378695960023 w: 1 h: 1 RESIZE: 6378733837813 w: 400 h: 300 

如果其他人遇到同样的问题,结果是JVM问题,而不是JafaFX JDK问题。 当使用窗口管理器的效果时,像在使用Compiz时,Linux会出现这个问题。 看起来这是以前在JRE1.6之前发生的,本来应该是1.6u3更新后才解决的,但是显然它会在JRE1.7中再次发生。

修复是用suckless-tools的wmname工具设置另一个窗口管理器名称。 对我来说,它设置为LG3D的工作。

希望这有助于某人。 问候!

棱镜输出看起来是正确的,这个硬件和管道FX应该在你的Linux上工作。 你可以,请运行下一个代码(它增加了一个简单的对象到场景和设置标题)?

 public class UITest extends Application { @Override public void start(Stage mainStage) { Group root = new Group(new Button("hello")); Scene scene = new Scene(root, 400, 300, Color.RED); mainStage.setScene(scene); mainStage.setTitle("fx test"); mainStage.show(); } public static void main(String[] args) { launch(); } }