我一直在尝试在虚拟化OS X安装中运行一个简单的JavaFX应用程序,但没有成功。在OS X主机系统上本机启动时,一切都按预期工作。
在我的研究之后,其他人也偶然发现了这个问题,但是没有一个建议的解决方案似乎有效:
到目前为止,我最好的方法是提示Java VM用PRISM软件渲染引擎替换PRISM硬件3D渲染引擎(使用-Dprism.order=sw
,请参阅this question)。
使用硬件渲染引擎时,JafaFX应用程序崩溃。使用软件渲染引擎时,JavaFX应用程序启动正常,但根本不显示任何UI元素。
我正在使用JavaFX“Hello World”应用程序,它由IntelliJ IDEA在选择“New Project ...”时生成 - > “Java FX Application”,加上一个简单的文本标签(见下面的代码)。
要从命令行运行JavaFX应用程序,我正在调用:
java -Dprism.order=sw -jar path/to/JavaFXApp.jar
JVM记录到命令行的唯一错误(即使在详细模式下)是
CGLCreateContext error: 10002
在主机系统上成功运行时,不会记录此错误。
Main.java :
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Controller.java :
package sample;
public class Controller {
}
sample.fxml :
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml"
alignment="center"
hgap="10" vgap="10">
<children>
<Label text="This is a 'javafx.scene.control.Label'" />
</children>
</GridPane>
答案 0 :(得分:0)
同样的问题。根据多个报告,这是JVM中的一个错误。
答案 1 :(得分:0)
这不是一个错误。
https://bugs.openjdk.java.net/browse/JDK-8154148
这更像是Mac OS X限制,阻止JDK在VM Ware虚拟机管理程序下运行。
我的应用程序遇到了同样的问题,并尝试在Oracle VirtualBox下运行它,但没有运气。但是,在真实设备上我的应用程序运行正常。
所以,购买硬件是我猜的唯一选择:)