JavaFX:需要帮助理解项目层次结构问题

时间:2016-04-02 04:27:42

标签: java maven intellij-idea jar manifest

我的代码变得非常大,所以我决定构建一个可运行的JAR来看看它是如何完成的。我可能应该早点尝试,因为我得到了2个与项目结构相关的不同错误,首先是尝试从命令提示符运行JAR时出现“无主要清单属性错误”。双击JAR什么都不做(Win7)。第二个问题与下面的FXMLLoader有关。

我按照here步骤构建了JAR,其中包括将所有Maven文件移动到JAR目录中。编译后的JAR给了我清单错误,所以我跟着this在我的pom.xml文件中添加了一个Maven插件。该错误可能是由行<mainClass>com.primary.Drag</mainClass>的命名约定错误引起的,其中primary是包,Drag是我的Drag.java文件(类),其main方法。

最初我使用的是默认包,但是读到不建议大型项目使用,所以我将所有文件都放到“主要”中。这是我当前的层次结构,如IntelliJ所示:

hierachy

问题是,自从我创建了“primary”软件包以来,我甚至无法再通过IntelliJ编译程序,更不用说构建一个可运行的JAR了。这是由于我提到的第二个错误,java.lang.IllegalStateException: Location is not set.中此行上的primary/Drag.java

FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("firstlaunch.fxml"));它曾经使用默认包,但现在不再使用了。

我尝试将firstlaunch.fxml替换为/primary/firstlaunch.fxml/resources/firstlaunch.fxml(使用和不将资源移入主程序包),但没有运气。

3相关问题:

  1. 我的项目结构不正确吗?
  2. 如何从primary包中引用fxml文件?
  3. 这是我应该在Maven的mainClass标签中写的吗? <mainClass>com.primary.Drag</mainClass>

1 个答案:

答案 0 :(得分:1)

  1. 我的项目结构不正确吗?
  2. 答案:

    您的包名应该像com.primary。******

    1. 如何从主要包中引用fxml文件?
    2. 答案:

      始终确保您尝试从位于保存该xml的同一包中的类加载firstlaunch .xml。您编写加载代码和xml文件的Means类应该在同一个包中

      1. 这是我应该在Maven的mainClass标签中写的吗?com.primary.Drag
      2. 答案:

        如果将包名更正为com.primary,则主类Drag将由maven正确添加

相关问题