Macos 是否存在阻止JavaFX在虚拟化OSX环境中运行的已知不兼容性? 问题描述
我一直在尝试在虚拟化OSX安装中运行一个简单的JavaFX应用程序,但没有成功。当在OSX主机系统上本机启动时,一切正常 根据我的研究,其他人也偶然发现了这个问题,但建议的解决方案似乎都不起作用:Macos 是否存在阻止JavaFX在虚拟化OSX环境中运行的已知不兼容性? 问题描述,macos,javafx,crash,virtual-machine,Macos,Javafx,Crash,Virtual Machine,我一直在尝试在虚拟化OSX安装中运行一个简单的JavaFX应用程序,但没有成功。当在OSX主机系统上本机启动时,一切正常 根据我的研究,其他人也偶然发现了这个问题,但建议的解决方案似乎都不起作用: 使用VirtualBox而不是VMware Fusion作为虚拟化工具,因为“VMware不是经过认证的虚拟机监控程序”(请参阅和) 我已在虚拟机的设置中激活/禁用3D硬件加速支持 到目前为止,我最好的方法是提示Java虚拟机将PRISM硬件3D渲染引擎替换为PRISM软件渲染引擎(使用-Dpri
- 使用VirtualBox而不是VMware Fusion作为虚拟化工具,因为“VMware不是经过认证的虚拟机监控程序”(请参阅和)
- 我已在虚拟机的设置中激活/禁用3D硬件加速支持李>
-Dprism.order=sw
,请参阅)
使用硬件渲染引擎时,JafaFX应用程序崩溃。使用软件渲染引擎时,JavaFX应用程序启动良好,但根本不显示任何UI元素
我使用的是JavaFX“Hello World”应用程序,它是IntelliJ IDEA在选择“新项目…”->“JavaFX应用程序”时生成的,并添加了一个简单的文本标签(见下面的代码)
要从命令行运行JavaFX应用程序,我调用:
java -Dprism.order=sw -jar path/to/JavaFXApp.jar
错误消息
JVM记录到命令行的唯一错误(即使在详细模式下)是
在主机系统上成功运行时,不会记录此错误
我的规格
- IntelliJ IDEA 14.1.1
- JDK 1.8.0_40
- OS X 10.9.5(主机操作系统)
- OS X 10.10.3(来宾操作系统)
- Vmware Fusion Professional 7.1.1
- VirtualBox 4.3.26
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);
}
}
package sample;
public class Controller {
}
<?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>
Controller.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);
}
}
package sample;
public class Controller {
}
<?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>
sample.fxml:
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);
}
}
package sample;
public class Controller {
}
<?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>
同样的问题。根据多份报告,这是JVM中的一个bug 这不是一个bug 它更像是一个MacOSX限制,它阻止JDK在VM软件管理程序下运行 我的应用程序也遇到了同样的问题,并尝试在Oracle VirtualBox下运行,但没有成功。然而,在真实设备上,我的应用程序运行良好
因此,我想购买硬件是唯一的选择:)我在运行并行程序时遇到了类似的问题。