IntelliJ IDEA 2023.1.3(社区版)Macbook
1.新建项目> JavaFX
- Name:life's a game
- Location:~/IdeaProjects/demo
- 语言:Java
- 构建系统:梅文
- 组:com.example
- 工件:演示
- JDK:18.0.1(默认)
2.测试构建与运行 - 成功,正常
3.文件>项目结构...> Artifacts > + > JAR > From modules with dependencies - 模块:demo
- HelloApplication(com.example.demo)
- 库中的JAR文件>提取到目标JAR
- META-INF/MANIFEST.MF的目录:/Users/quenyan/IdeaProjects/demo/demo/src/main/resources
- 确定,然后再次确定以关闭项目结构
4. Build > Build Artifacts... - demo:jar > Build
- 文件输出位于/Users/quenyan/IdeaProjects/demo/demo/out/artifacts/demo_jar/demo. jar
5.直接先试 - 在IDEA > Open in > Finder中右键单击demo.jar
- 双击finder中的demo.jar
- 拿到了
Java Application launch failed.
Check Console for possible error
messages related to "/Users/quenyan/
IdeaProjects/demo/demo/out/artifacts/
demo_jar/demo.jar".
字符串
6.终端二次尝试
- java -jar/Users/quenyan/IdeaProjects/demo/demo/out/artifacts/demo_jar/demo.jar
- 得到这个
Error: JavaFX runtime components are missing, and are required to run this application
型
我错过了什么?
1条答案
按热度按时间esyap4oy1#
此答案基于Random code's Youtube content (Windows Based)
这里有两个关键的事情(但不是那么复杂)需要注意:
1.为了避免出错,我们需要创建一个新的Java Class,运行main,不带任何extends。
X public class HelloApplication extends Application X
公共类YourMain
在Mac中,选择包含主Java类的文件夹,在我的示例中,我的HelloApplication.java在com.example.test文件夹中,因此我选择com.example.test,然后右键单击> New > Java Class并命名新的Java Class,在我的示例中,我将其命名为“Main”(它将创建Main.java),并且此新Class将与您的“com.example.yourproject”文件夹具有相同的级别
现在应该是这个样子
字符串
对于新的java类,可以这样编写
型
好的,第一部分就到这里。
2.我们需要将libraries/binaries/brains添加到jar文件的工件中
完成第一个后,进入文件>项目结构...> Artifacts > + icon > JAR > From modules with dependencies > Main Class(Select your new Java Class)> OK
加载完元素列表后,找到图标**+(上面写着“添加副本”),然后选择文件**,搜索你的java sdk文件夹,在我的例子中我选择javafx-sdk-20.0.1文件夹>然后lib(Mac/Linux,Windows应该是“bin”)然后选择lib中的所有文件按shift并单击,文件应该是像 *.jar或 *.dylib,我还包括 *.properties文件,Windows应该是 *.dll文件。
然后申请,然后OK。
之后,我们就完成了,最后一部分是构建JAR。选择Build > Build Artifacts > Build,现在JAR(可以在“out”文件夹中找到)在任何地方都可以执行(Mac/Linux,还没有在Win上尝试过),不确定将bin和lib文件放在一起是否可以使其在任何地方都可以执行,我还不知道这一点。
PS.不需要搞乱maven,gradle,module,或者其他什么想法。只要遵循这两个简单的规则,你就会没事的。