簡體   English   中英

JavaFX應用程序:找不到FXML文件

[英]JavaFX app: FXML file not found

我的應用程序打包為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文件是有效的)。

通過Webstart運行應用程序時為什么看不到Main.fxml文件? javaws myapp.jnlp產生相同的錯誤)

我是否缺少某些東西,或者它是JavaFX&JNLP的錯誤?

軟體:Java 8 u51,Linux Centos 6 64位。

更新資料

我已經簽名了jar文件,將Permissions: sandboxCodebase: *添加到清單中,將<security><all-permissions/></security>到我的.jnlp中,將控制面板設置設置為盡可能寬松,將我的網址( file:/ )列入白名單無濟於事。 我的應用由於“安全原因”而被阻止。 這是令人沮喪的。

可能是您的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM