JavaFX : Need help understanding project hierarchy issues

标签 java maven intellij-idea jar manifest

我的代码已经变得相当大,因此我决定构建一个可运行的 JAR 来看看它是如何完成的。我可能应该早点尝试,因为我遇到了 2 个与项目结构相关的不同错误,第一个是尝试从命令提示符运行 JAR 时出现“无主 list 属性错误”。双击 JAR 不会执行任何操作 (Win7)。第二个问题与下面解释的 FXMLLoader 有关。

我按照步骤here进行操作构建 JAR,这涉及将所有 Maven 文件移动到 JAR 目录中。编译的 JAR 给了我明显的错误,所以我按照 this 进行操作。它在我的 pom.xml 中添加了一个 Maven 插件文件。该错误可能是由于 <mainClass>com.primary.Drag</mainClass> 行的命名约定错误引起的。哪里primary是包裹和 Drag是我的 Drag.java 文件(类),其中包含 main方法。

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

hierachy

问题是,自从我创建了“主”包后,我什至无法再通过 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. 我的项目结构是否不正确?

答案:

你的包名称应该类似于 com.primary.******

  • 如何引用主包中的 fxml 文件?
  • 答案:

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

  • 这是我应该在 Maven 的 mainClass 标签中编写的内容吗?com.primary.Drag
  • 答案:

    如果你的包名更正为 com.primary ,你的主类 Drag 将被 maven 正确添加

    关于JavaFX : Need help understanding project hierarchy issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36369194/

    相关文章:

    java - Maven 安装同一依赖项的多个版本

    git - 使用git时如何解决IntelliJ中的 "Mark Resolved"冲突?

    java - 我的数组程序

    Java 32 位 JRE : can this JRE run a 64 bit program?

    java - 在 WebSphere 8.5 上创建 webservice jax-ws 的问题

    java - 从远程存储库获取/检查依赖关系

    java - 在 Maven 中解析或编译循环依赖

    java - 自动生成非泛型接口(interface)实现

    scala - IntelliJ Idea 找不到 sbt-idea-compiler-indices

    java - 有人可以澄清@RequestBody吗