2016-04-02 106 views
1

我的代碼變得非常大,所以我決定構建一個可運行的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顯示我目前的層次:

hierachy

的問題是,自從我創建了「主」包,我再也無法編譯通過的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個相關問題:

  1. 是我的項目結構不正確的?
  2. 如何引用primary包中的fxml文件?
  3. 這是我應該寫在Maven的mainClass標籤中嗎? <mainClass>com.primary.Drag</mainClass>

回答

1
  1. 我的項目結構不正確嗎?

答:

你包的名字應該像com.primary ******

  • 如何從theprimary引用FXML文件包?
  • 答:

    始終確保你正試圖從位於在XML是保持同一個包的類加載firstlaunch .XML。你寫的加載代碼和xml文件的類應該在同一個包中

    1. 這是我應該在Maven的mainClass標記中寫的?com.primary。將

    答:

    如果打包更正爲com.primary的名字,你的主類將將正確的行家

    +0

    添加謝謝,我改名爲包玉米和****有效。我還必須確保META-INF文件夾位於src/main/resources而不是src/main/java/... –