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

时间:2012-03-18 21:49:06

标签: linux javafx

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

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

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

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

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

    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);
    }
}

这会显示THIS窗口。

我正在使用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

2 个答案:

答案 0 :(得分:3)

如果其他人遇到同样的问题,那么结果证明是JVM的问题,而不是JafaFX JDK。在使用具有效果的窗口管理器时,Linux中会出现此问题,例如使用Compiz时。似乎这曾经发生在JRE1.6之前,并且应该在更新1.6u3之后解决,但显然它再次发生在JRE1.7上。

该修复程序是使用suckless-tools'设置另一个窗口管理器名称。 wmname实用程序。对我来说,它通过设置为LG3D来工作。

希望这有助于某人。 此致!

答案 1 :(得分:0)

Prism输出看起来是正确的,这个硬件和管道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(); }
}