2017-05-12 72 views
0

enter image description here如何找到fxml文件,以便我的JavaFX項目可以在任何PC上輕鬆運行?

編輯:我的代碼工作正常,以及在我的電腦上。我沒有加載我自己的FXML文件的問題。我希望它能在其他PC上工作。

忽略控制檯中的錯誤,這是找到我的fxml文件的壞方法?出於某種原因,這不會在另一臺PC上運行,因爲它無法找到fxml文件,儘管我沒有提供任何只從與我的PC相關的文件夾名稱開始的URL。

我的意思是說,所有fxmlloader網址都從codingWizard包開始,然後從那裏繼續。爲什麼不能在另一臺PC上運行?在我的朋友PC上,當它在桌面上時,它說它找不到位置:C:/ Users/HisPC/Desktop /..../ codingWizard/....等等。

如果這是打包fxml文件的錯誤方式,那麼我可以提供一個適用於FXMLLoader的URL,這種方式可以正常工作在任何其他PC上,而無需進行調整。

+0

[從jar中獲取資源]的可能的重複(http://stackoverflow.com/questions/3831845/get-resource-from-jar) –

+0

甚至沒有關閉?正確的答案涉及獲取資源流的答案(getResourceAsStream()),這不是我想要的。這也不是一個jar文件。此外,這傢伙無法加載他自己的.txt文件,而我可以加載我自己的FXML文件。它不適用於其他電腦。讀上帝之愛的線索。 – Random

+0

以資源*的形式訪問您的資源(不僅僅是FXML文件)。把它們放在一個單獨的文件夾中(通常是'$ {project_loc}/src/main/resources}'),它被設置爲IDE中的「源文件夾」。然後你可以通過getClass()來訪問它。getResource(「/ path/below/resourceFolder/my.fxml」)' –

回答

1

您的FXML文件是在您發佈程序後最有可能不會更改的資源。您應該通過getClass().getResource("/somename.fxml")訪問它們;

要啓用此訪問,你必須在該文件添加位置到項目類路徑

這樣做

最好的辦法是你的項目目錄結構切換到標準項目目錄佈局因爲它建議由阿帕奇項目:https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

您能夠配置IDE使用 ${project_loc}/src/main/java${project_loc}/src/main/resources爲「源文件夾」(刪除「源文件夾從${project_loc}/src」 - 屬性)

這種變化後,您可以使用此代碼訪問該文件${project_loc}/src/main/resources/my.fxml

getClass().getResource("/my.fxml"); 

你的IDE將包括${project_loc}/src/main/resources所有文件到交貨神器。

+0

我很欣賞答案。我通過將我所有的CSS和FXML文件放到一個名爲/ src/codingWizard/resources的文件夾中,然後將該文件夾初始化爲* resources *,但在我從另一個文件夾中運行它時仍然不起作用PC。 – Random

+0

其實我是個白癡。它一直工作。我忘了發送我在項目中使用的圖像庫,這就是爲什麼它不起作用。 – Random

0

我是個白癡。蒂莫西·卡特萊的答案奏效。我原來的代碼可能會工作,我是一個白癡,忘記傳輸我在我的主要PC中的圖像文件夾。

這就是爲什麼FXML文件夾發出錯誤並且說未找到無效的URL或資源。一直以來,我認爲這是指FXML文件的位置,但它指的是圖像的位置。

編輯:我的原始代碼工作正常,只要我包含圖像。

相關問題