我在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的应用程序获取代码库很重要。
答案 0 :(得分:0)
来自hostServices.getCodeBase()
javadoc:
如果应用程序未打包在jar文件中,则此方法返回空字符串。
此外:
如果应用程序是通过JNLP文件启动的,则此方法返回JNLP文件中指定的codebase参数。
要让hostServices.getCodeBase()
返回预期值,您必须根据上述指南正确打包您的应用程序。
您打包应用程序的方式因您使用的打包工具而异,因此请参阅工具供应商的文档,以获取有关使用您选择的开发环境打包应用程序的信息。