0

我将我的应用程序打包为 JAR 文件。跑步java -jar myapp.jar效果很好。我想在浏览器中运行这个应用程序,所以我使用该javapackage命令创建了 JNLP 和 HTML 文件。

我已将我的file://URL 列入白名单,启用控制台以进行调试输出,这就是我所看到的:

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 文件是有效的)。

为什么Main.fxml使用 webstart 运行应用程序时文件不可见?(javaws myapp.jnlp产生相同的错误)

我错过了什么还是 JavaFX 和 JNLP 的错误?

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

更新

我已经签署了我的 jar 文件,添加Permissions: sandboxCodebase: *我的清单,添加<security><all-permissions/></security>到我的 .jnlp,将控制面板设置设置为尽可能宽松,将我的 URL ( file:/) 列入白名单,但无济于事。由于“安全原因”,我的应用程序被阻止。这令人沮丧。

4

1 回答 1

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

于 2015-07-17T22:03:16.260 回答