JavaFX:需要帮助理解项目层次结构问题吗
我的代码变得相当大,所以我决定构建一个可运行的JAR,看看它是如何完成的。我可能应该早点尝试,因为我遇到了与项目结构相关的两个不同错误,第一个是在试图从命令提示符运行JAR时出现的“无主清单属性错误”。双击JAR什么也不做(Win7)。第二个问题与下面解释的FXMLLoader有关
我按照步骤here构建JAR,这涉及将所有Maven文件移动到JAR目录中。编译后的JAR给了我清单错误,所以我遵循了this,它在我的pom.xml
文件中添加了一个Maven插件。该错误可能是由于<mainClass>com.primary.Drag</mainClass>
行的命名约定错误造成的,其中primary
是包Drag
是我的拖拽。具有main
方法的java文件(类)
起初,我使用的是默认软件包,但读到这不建议用于更大的项目,所以我将所有文件放入“主”中。以下是我当前的层次结构,如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>
# 1 楼答案
答复:
你的包名应该像com。初级。*****
答复:
始终确保您正在尝试加载firstlaunch。来自类的xml,该类位于保存该xml的同一个包中。表示您编写加载代码和xml文件的类应该在同一个包中
答复:
如果您将包名更正为com。primary,maven将正确添加主类拖动