2013-11-29 35 views
6

Có thể chạy JavaFx ở chế độ không đầu (trong Java 7) không? Nó đang được sử dụng để tạo ra hình ảnh trên máy chủ nhưng đang yêu cầu một X-Server. Có tồn tại một cái gì đó như java.awt.headless trong JavaFx? (Tôi không thể sử dụng Xvfb)JavaFx ở chế độ không đầu

Trả lời

0

Đây là một loại vấn đề mà tôi gặp phải trong khi chụp ảnh trong Mac OS.

Tôi đã giải quyết vấn đề này bằng cách sử dụng

static { 

     System.setProperty("java.awt.headless", "false"); 
} 

Xem để tham khảo: Headless environment error in java.awt.Robot class with MAC OS

+0

Điều này chỉ dành cho Swing và AWT, chứ không phải JavaFX – ldmtwo

+0

Tôi đã thử nó một mình, và nó hoạt động 100%. Có lẽ trường hợp của bạn là một cái gì đó khác nhau. Đọc liên kết tham chiếu được chia sẻ. –

1

trả lời bởi Shreyas Dave không làm việc cho tôi nữa. Mặc dù tôi không biết tại sao, đây là những gì tôi đã làm:

public static void main(String[] args) { 
    // to avoid 
    // [JRSAppKitAWT markAppIsDaemon]: Process manager already initialized: can't fully enable headless mode. 
    System.setProperty("javafx.macosx.embedded", "true"); 
    java.awt.Toolkit.getDefaultToolkit(); 
    // end 
    launch(args); 
} 

này cũng được chỉ ra ở đây: JavaFX screencapture headless exception on OSX

2

Dưới đây là cách tôi giải quyết vấn đề này cho geneartion hình server-side trên Ubuntu môi trường Linux với máy chủ ứng dụng jetty. Nó sử dụng Xvfb nhưng chỉ như là một "thư viện" - mà không có bất cứ hành động đặc biệt bổ sung trên máy chủ:

apt-get install xvfb 

// then on application server start: 

export DISPLAY=":99" 

start-stop-daemon --start --background --user jetty --exec "/usr/bin/sudo" -- -u jetty /usr/bin/Xvfb :99 -screen 0 1024x768x24 

Bạn có thể xem chi tiết về giải pháp tạo file server-side của tôi trong this SO question.

-1

Nếu bạn có mã nguồn của ứng dụng JavaFX, bạn cũng có thể thử sử dụng TestFX chạy ứng dụng ở chế độ không đầu, để điều khiển và tạo ảnh chụp màn hình. Để chạy ứng dụng TestFX bạn trong chế độ không đầu bạn phải bắt đầu nó với các thông số JVM sau (để cho phép Monocle):

-Dtestfx.robot=glass -Dglass.platform=Monocle -Dmonocle.platform=Headless -Dprism.order=sw 

Hơn nữa bạn có thể cần phải cài đặt Monocle đầu tiên. Xem Headless testing with JavaFx and TestFx để biết thêm thông tin.

+0

Điều này không hoạt động. –

+0

Vâng, nó hoạt động trên máy chủ Linux không đầu của tôi. Nhưng tôi thừa nhận rằng nó không tầm thường để thiết lập. Và tôi đã thử nó chỉ trong sự kết hợp với TestFX. Vì vậy, nó có thể không hoạt động với các ứng dụng JavaFX bình thường. Bạn đã cài đặt Monocle đúng chưa? –

+0

Tôi quản lý để làm cho nó hoạt động với một mắt. –

Các vấn đề liên quan