我的代碼變得非常大,所以我決定構建一個可運行的JAR以查看它是如何完成的。我可能應該儘早嘗試,因爲我得到2個與項目結構相關的不同錯誤,第一個是在嘗試從命令提示符運行JAR時出現「no main manifest attribute error」。雙擊JAR不會執行任何操作(Win7)。第二個問題與FXMLLoader解釋更低。JavaFX:需要幫助瞭解項目層次結構問題
我按照步驟here來構建JAR,其中包括將所有Maven文件移動到JAR目錄中。編譯的JAR給了我明顯的錯誤,所以我跟着this,在我的pom.xml
文件中添加了一個Maven插件。該錯誤可能是由於<mainClass>com.primary.Drag</mainClass>
行命名錯誤導致的,其中primary
是包,Drag
是我的Drag.java文件(類),它具有main
方法。
初步我使用的是默認包,但讀到這不建議用於較大的項目,所以我把我所有的文件放到「主」中。這是在的IntelliJ顯示我目前的層次:
的問題是,自從我創建了「主」包,我再也無法編譯通過的IntelliJ程序,更不用說建立一個可運行的JAR 。這是由於我提到的第二個錯誤,這是java.lang.IllegalStateException: Location is not set.
在此行內primary/Drag.java
:
FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("firstlaunch.fxml"));
它用於使用默認包,但不再是。
我試着用/primary/firstlaunch.fxml
和/resources/firstlaunch.fxml
替換firstlaunch.fxml
(有和沒有將資源移入主包),但沒有運氣。
3個相關問題:
- 是我的項目結構不正確的?
- 如何引用
primary
包中的fxml文件? - 這是我應該寫在Maven的mainClass標籤中嗎?
<mainClass>com.primary.Drag</mainClass>
添加謝謝,我改名爲包玉米和****有效。我還必須確保META-INF文件夾位於src/main/resources而不是src/main/java/... –