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

JavaFX: Need help understanding project hierarchy issues

我的代码已经变得相当大,所以我决定构建一个 运行nable JAR 看看它是如何完成的。我可能应该早点尝试,因为我遇到了 2 个与项目结构相关的不同错误,第一个是 "no main manifest attribute error" 试图从命令提示符 运行 JAR。双击 JAR 不执行任何操作 (Win7)。第二个问题与下面解释的 FXMLLoader 有关。

我按照步骤 here to build the JAR, which involved moving all Maven files into the JAR directory. The compiled JAR gave me the manifest error, so I followed this 在我的 pom.xml 文件中添加了一个 Maven 插件。该错误可能是由于 <mainClass>com.primary.Drag</mainClass> 行的命名约定错误引起的,其中 primary 是包,Drag 是我的 Drag.java 文件 (class) main 方法。

最初我使用的是默认包,但了解到不建议将其用于较大的项目,因此我将所有文件放入 "primary"。这是我在 IntelliJ 中显示的当前层次结构:

问题是,自从我创建了 "primary" 包后,我什至无法再通过 IntelliJ 编译程序,更不用说构建 运行nable JAR 了。这是由于我提到的第二个错误造成的,即 primary/Drag.java:

中这一行的 java.lang.IllegalStateException: Location is not set.

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. 我的项目结构不正确吗?

答案:

你的包名应该像 com.primary.******

  1. 如何从主包中引用 fxml 文件?

答案:

始终确保您正在尝试从 class 加载 firstlaunch .xml,该 class 位于保存 xml 的同一包中。意味着 class 你写的加载代码和 xml 文件应该在同一个包中

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

答案:

如果您的包名称更正为 com.primary ,您的主要 class 拖拽将由 maven

正确添加