簡體   English   中英

FXML 文件似乎沒有在 JAR 中傳輸

[英]FXML files don't seem to be transfered in the JAR

我正在嘗試將我用 Intellij 編寫的 JavaFX 程序導出到 JAR 中,以便我可以將它發送給我的同學,以便他們可以在口頭報告中運行它。
我的文件結構如下:
來源

  • 主要的
    • java
      • 撲通一聲
        • 主要的
        • 其他類和控制器
    • 資源
      • 撲通一聲
        • 三個 FXML 文件

要訪問 FMXL,我使用這個:

53        FXMLLoader fxmlLoader = new FXMLLoader(main.class.getResource("SceneOuverture.fxml"));
54        Parent root =fxmlLoader.load();
55        Scene scene = new Scene(root);

當我從 Intellij 運行它時,它可以工作,但是當我用這個工件導出它時它停止工作:

<component name="ArtifactManager">
  <artifact type="jar" name="modified-boids:jar">
    <output-path>$PROJECT_DIR$/out/artifacts/modified_boids_jar</output-path>
    <root id="archive" name="modified-boids.jar">
      <element id="directory" name="META-INF">
        <element id="file-copy" path="$PROJECT_DIR$/src/META-INF/MANIFEST.MF" />
      </element>
      <element id="module-output" name="modified-boids.main" />
      <element id="extracted-dir" path="$PROJECT_DIR$/../../../../../../Program Files/Java/jdk-18.0.1.1/lib/src.zip" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/../../../../../../Program Files/Java/jdk-18.0.1.1/lib/jrt-fs.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-base/18.0.1/3285f1855bf294dd4eba57ba84f96c555c819260/javafx-base-18.0.1-win.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-graphics/18.0.1/79b7b4ecf6a90692e4accdbf9e4e68714d235844/javafx-graphics-18.0.1-win.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-base/18.0.1/be9bf95be2716c11b88594eeaf4b832874265cc9/javafx-base-18.0.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-controls/18.0.1/22cf4d2bbb80d0d0430fcf71cdf0dfe3475ebd93/javafx-controls-18.0.1-win.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.kordamp.bootstrapfx/bootstrapfx-core/0.4.0/8d019b30266c00770cf29921d1008ad7feed0ed6/bootstrapfx-core-0.4.0.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-graphics/18.0.1/4180a4bfda9692cbb444fb70b2506546e03f961b/javafx-graphics-18.0.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-fxml/18.0.1/c38102123668cca2a7dea83a7567fbebbe93f148/javafx-fxml-18.0.1-win.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.controlsfx/controlsfx/11.1.1/d303c563c23d5176346e8d05932afbec421060ae/controlsfx-11.1.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-controls/18.0.1/c292e8fcec3ffd843216a29c3b00b2d320efe83d/javafx-controls-18.0.1.jar" path-in-jar="/" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-console-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-console-l1-2-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-datetime-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-debug-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-errorhandling-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-file-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-file-l1-2-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-file-l2-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-handle-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-heap-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-interlocked-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-libraryloader-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-localization-l1-2-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-memory-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-namedpipe-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-processenvironment-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-processthreads-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-processthreads-l1-1-1.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-profile-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-rtlsupport-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-string-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-synch-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-synch-l1-2-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-sysinfo-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-timezone-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-core-util-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-conio-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-convert-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-environment-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-filesystem-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-heap-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-locale-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-math-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-multibyte-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-private-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-process-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-runtime-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-stdio-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-string-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-time-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/api-ms-win-crt-utility-l1-1-0.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/decora_sse.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/fxplugins.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/glass.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/glib-lite.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/gstreamer-lite.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/javafx_font.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/javafx_iio.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/jfxmedia.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/jfxwebkit.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/msvcp140.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/msvcp140_1.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/msvcp140_2.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/prism_common.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/prism_d3d.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/prism_sw.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/ucrtbase.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/vcruntime140.dll" />
      <element id="file-copy" path="$PROJECT_DIR$/../../javafx-sdk-19/bin/vcruntime140_1.dll" />
    </root>
  </artifact>
</component>

這是我啟動 JAR 時收到的錯誤消息:

Exception in Application start method    
(...)      
Caused by: java.lang.IllegalStateException: Location is not set.             
(...)      
at plop.main.start(main.java:54)

我試圖用這兩行替換這三行:

53        Parent root =FXMLLoader.load(Objects.requireNonNull(getClass().getResource("SceneOuverture.fxml")));              
54        Scene scene = new Scene(root);

但是它仍然不起作用,所以我用 7-Zip 打開了 JAR,但我在從 JAR 中提取的文件中找不到 FXML 文件,所以我真的不知道 FXML 是否不能用7-Zip 或者如果它們根本不導出。
你知道我應該做什么嗎?

要將fxml文件放在jar中,解決方案是將工件中的資源文件夾添加為“目錄內容”。
然后,我不得不更換
Parent root=FXMLLoader.load(Objects.requireNonNull(getClass().getResource("SceneOuverture.fxml"))) Parent root =FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/plop/SceneOuverture.fxml")))對於每個 FXML 加載器。

暫無
暫無

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

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