JavaFX app:找不到FXML文件

时间:2015-07-17 21:57:03

标签: java javafx java-web-start jnlp fxmlloader

我将我的应用打包为JAR文件。运行java -jar myapp.jar工作得很好。我想在浏览器中运行此应用程序,因此我使用javapackage命令创建了JNLP和HTML文件。

我已将file://网址列入白名单,启用了控制台以获取调试输出,以及我所看到的内容:

FXML resource = null
load fxml
java.lang.IllegalStateException: Location is not set.
   at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2438)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2413)
   :

相应的代码是:

public class Main extends Application
{
    @Override
    public void start(Stage stage) {
        try {
            System.out.println("FXML resource = " + getClass().getResource("Main.fxml"));
            FXMLLoader fxml_loader = new FXMLLoader(getClass().getResource("Main.fxml"));
            Controller controller = new Controller(stage);
            fxml_loader.setController(controller);
            System.out.println("load fxml");
            Parent root = fxml_loader.load(); 
            :

我已经验证了Main.xml在jar文件中的位置和位置是正确的(请记住从java运行jar文件)。

使用webstart运行应用时,为什么Main.fxml文件无法显示? (javaws myapp.jnlp产生相同的错误)

我是否遗漏了某些内容,或者是JavaFX& JNLP?

软件:Java 8 u51,Linux Centos 6 64位。

更新

我已经签署了我的jar文件,将Permissions: sandboxCodebase: *添加到我的清单中,将<security><all-permissions/></security>添加到我的.jnlp,将控制面板设置设置为尽可能允许,列入白名单我的网址(file:/)无济于事。我的应用程序因安全原因而被阻止&#34;。这太令人沮丧了。

1 个答案:

答案 0 :(得分:0)

你的jar文件是否未签名?

  

默认情况下,Web应用程序在沙箱中运行。要请求提升的权限,请使用标记。请注意,为了授予权限,必须对应用程序JAR文件进行签名,并且用户必须信任用于签名的安全证书。如果应用程序请求提升的权限,但不满足用户授予权限的要求,则应用程序将无法启动。

     

在添加代码以签署您的应用程序之前,请确保签名是   需要,因为它带来了执行验证的开销成本   并经常导致向最终用户显示其他对话框   在应用程序启动。请参见第3.2.4节“在沙箱中运行,除非   签名并信任“以了解应用程序何时需要提升   权限。

请参阅http://docs.oracle.com/javafx/2/deployment/packaging.htm#BABJGFB

另请查看https://docs.oracle.com/javase/tutorial/deployment/jar/signindex.html