Javafx getHostServices()。getCodeBase()返回一个空字符串

时间:2015-11-02 22:35:56

标签: javafx

我在javafx应用程序的start方法中调用getHostServices()。getCodeBase()但它返回一个空字符串????。 应用程序构造函数和start方法的两次调用都返回空字符串。

 public class MyApplication extends Application {

        private HostServices hostService;
        private MyController controller ;
        private Parent root;
        private HostServices hostService;

    public MyApplication() throws IOException  {

        hostService = getHostServices();
        System.out.println("Codebase : "+hostService.getCodeBase() ); // return empty string 

    }

        @Override
        public void start(Stage primaryStage) {

            this.primaryStage = primaryStage;

            try {

                FXMLLoader fxmlLoader = new FXMLLoader(this.getClass().getResource("/mypackage/my.fxml") ); 
                controller = new MyController();
                fxmlLoader.setController(controller);
                fxmlLoader.load();
                root = fxmlLoader.getRoot();

                Scene scene = new Scene(root,1200,1000); 
                primaryStage.setScene(scene);
                primaryStage.show();
                 System.out.println("Codebase : "+getHostServices().getCodeBase() ); // return empty string 

            } catch(Exception e) {
                e.printStackTrace();
            }
        }  

这是非常奇怪的情况,因为部署到Web的应用程序获取代码库很重要。

1 个答案:

答案 0 :(得分:0)

来自hostServices.getCodeBase() javadoc:

  

如果应用程序未打包在jar文件中,则此方法返回空字符串。

此外:

  

如果应用程序是通过JNLP文件启动的,则此方法返回JNLP文件中指定的codebase参数。

要让hostServices.getCodeBase()返回预期值,您必须根据上述指南正确打包您的应用程序。

您打包应用程序的方式因您使用的打包工具而异,因此请参阅工具供应商的文档,以获取有关使用您选择的开发环境打包应用程序的信息。