JavaFX 0x300b: Không thể có được bề mặt EGL


8

Tôi đang cố chạy một mẫu javafx trên raspaberry pi 3 trong môi trường nhúng (buildroot), tôi muốn chạy nó mà không có X. khi tôi chạy lệnh:

/root/jre-13.0.1/bin/java  -Dfile.encoding=UTF-8 --add-modules javafx.controls,javafx.fxml -Dprism.verbose=true -Djavafx.verbose=true -Dglass.platform=Monocle -Dprism.order=es2 -Djava.library.path=/root/jre-13.0.1/lib/ -Dembedded=monocle   -jar /home/root/NetBeansProjects//JavaFXFXML/dist/JavaFXFXML.jar 

Tôi nhận được lỗi sau đây:

cmd : cd '/home/root/NetBeansProjects//JavaFXFXML'; '/root/jre-13.0.1//bin/java'  -Dfile.encoding=UTF-8 --add-modules javafx.controls,javafx.fxml -Dprism.verbose=true -Djavafx.verbose=true -Dglass.platform=Monocle -Dprism.order=es2 -Djava.library.path=/root/jre-13.0.1/lib/ -Dembedded=monocle   -jar /home/root/NetBeansProjects//JavaFXFXML/dist/JavaFXFXML.jar 
JavaFX launchApplication method: launchMode=LM_JAR
Prism pipeline init order: 
es2 
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Using system sized mask for primitives
Not 
f
orcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
Loading ES2 native library ... prism_es2_monocle
Loaded /root/jre-13.0.1/lib/libprism_es2_monocle.so from java.library.path
    succeeded.
GLFactory using com.sun.prism.es2.MonocleGLFactory
Loaded /root/jre-13.0.1/lib/libglass_monocle.so from java.library.path
com.sun.glass.ui.monocle.GLException: 0x300b: Could not get EGL surface
    at javafx.graphics/com.sun.glass.ui.monocle.AcceleratedScreen.<init>(Unknown Source)
    at javafx.graphics/com.sun.glass.ui.monocle.NativePlatform.getAcceleratedScreen(Unknown Source)
    at javafx.graphics/com.sun.prism.es2.MonocleGLFactory.initialize(Unknown Source)
    at javafx.graphics/com.sun.prism.es2.ES2Pipeline.<clinit>(Unknown Source)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Unknown Source)
    at javafx.graphics/com.sun.prism.GraphicsPipeline.createPipeline(Unknown Source)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(Unknown Source)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
(X) Got class = class com.sun.prism.es2.ES2Pipeline
GraphicsPipeline.createPipeline: error initializing pipeline com.sun.prism.es2.ES2Pipeline
Graphics Device initialization failed for :  es2

Tôi đã chạy các ví dụ hello_trigin và hello_dispmanx để kiểm tra sự tích lũy gpu và ở đó không có vấn đề gì. Không biết tại sao tôi lại gặp Could not get EGL surfacelỗi, có cách nào để gỡ lỗi này không

Cài đặt Java:

# java --version
openjdk 13.0.1-BellSoft 2019-10-15
OpenJDK Runtime Environment (build 13.0.1-BellSoft+9)
OpenJDK Server VM (build 13.0.1-BellSoft+9, mixed mode)


1
sử dụng SW Pipeline hoạt động, tôi chỉ muốn thử sử dụng tích hợp phần cứng
Rui Sebastião

Hãy thử liên hệ với BellSoft, nhà cung cấp JDK của bạn và hỏi họ.
jewnes

Câu trả lời:


8

Cuối cùng tôi đã tìm ra ... Vì tôi đang sử dụng buildroot tất cả các thư viện (GPU) của raspberry pi trong /usr/libthư mục. Tuy nhiên, đi sâu vào mã nguồn đơn, chính xác hơn là trong DispmanPl platformFactory.java , chúng ta có thể thấy cách chúng khớp với nền tảng là tìm kiếm libbcm_host.so /opt/vc/libkhông tồn tại trong cấu hình buildroot. Một cách giải quyết nhanh chóng cho những người sử dụng buildroot là tạo một liên kết tượng trưng để libbcm_host.sotrong/opt/vc/lib

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.