我将我的应用程序打包为 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: sandbox
到Codebase: *
我的清单,添加<security><all-permissions/></security>
到我的 .jnlp,将控制面板设置设置为尽可能宽松,将我的 URL ( file:/
) 列入白名单,但无济于事。由于“安全原因”,我的应用程序被阻止。这令人沮丧。