我的代码变得非常大,所以我决定构建一个可运行的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所示:
问题是,自从我创建了“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相关问题:
primary
包中引用fxml文件?<mainClass>com.primary.Drag</mainClass>
答案 0 :(得分:1)
答案:
您的包名应该像com.primary。******
答案:
始终确保您尝试从位于保存该xml的同一包中的类加载firstlaunch .xml。您编写加载代码和xml文件的Means类应该在同一个包中
答案:
如果将包名更正为com.primary,则主类Drag将由maven正确添加