我将我的应用打包为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: sandbox
和Codebase: *
添加到我的清单中,将<security><all-permissions/></security>
添加到我的.jnlp,将控制面板设置设置为尽可能允许,列入白名单我的网址(file:/
)无济于事。我的应用程序因安全原因而被阻止&#34;。这太令人沮丧了。
答案 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