我正在尽力导出我的javafx(11)项目,但似乎什么也做不到。我使用IntelliJ IDE,例如,让我们使用此项目:https://github.com/EveningSt3r/JFX-hotel-project.(我在30分钟内写下了这篇文章,但它很简单,并且满足了这个问题的目的)
当我使用IntelliJ的构建工件功能时:“fx:deploy不可用”我不知道如何使用jlink,并且所有在线教程都让我感到困惑。大多数 javafx 教程都是从它是 JDK 的一部分开始的,所以这无济于事。我不知道如何使用梅文和格拉德。
这是来自一个对Java的实际工作方式不太了解,只知道如何制作东西的家伙。
我花了几周时间试图弄清楚这一点,所以有人能帮我把它降低到婴儿级别吗?关于如何把它变成可运行的东西或exe?我知道我听起来很傻,但我只是累了。
这与jlink无关,只是与您创建工件的方式有关。
每当在 IntelliJ 中创建.jar文件时,在创建工件之前,都必须将 java bin 文件中的文件输入到工件中。
为此,您必须转到文件-项目结构-工件。
然后单击加号“ ”,将鼠标悬停在 JAR 上并选择“来自具有依赖关系的模块”。
之后,在弹出式显示中选择“主类”栏并输入主类(可能标题为“主类”),然后单击确定。
然后你会看到一个新的盒子。在该框中单击其中的加号,然后单击“文件”。
然后转到程序文件中的jre文件夹,该文件夹将位于“Java”文件夹中。进入它,然后双击“bin”。突出显示所有文件,而不是文件夹,然后将其放入您的工件中。
之后,在工件窗口上点击“ok ”,它将关闭。
现在,您可以设置单击“构建工件”按钮!
单击按钮并选择“构建”
单击按钮后,.jar文件将显示在项目文件夹中的“out”下和“工件”中!
有好的一天!:)
一种选择是使用< code>jpackage工具。这个工具在Java 14-15中是一个孵化特性,在Java 16中是标准化的。它创建一个自包含的应用程序。换句话说,生成的应用程序不仅包含您自己的代码和任何依赖项,还包含嵌入式Java运行时环境(JRE)。这样,您的最终用户就不必担心安装Java或JavaFX。相反,它们以本机安装程序/可执行文件结束。
有一个< code>jpackage的用户指南。这个网站上的另一个用户(如果我没弄错的话,还有其他人)也创建了一个脚本,它可能会让事情变得更简单:JPackageScriptFX。
这是一个创建JavaFX应用程序的最小示例,其中应用程序完全从命令行使用jpack
打包。该示例假设一个模块化应用程序(即您的代码和所有依赖项都有一个module-info
文件),但jpack
也能够打包基于类路径的应用程序(即非模块化应用程序)。
├───out
│ ├───classes
│ └───package
└───src
└───com.example
│ module-info.java
│
└───com
└───example
└───app
Main.java
注意,我的源代码位于名为com.example的目录下。这与模块的名称相同,使得手动使用
javac
更加容易(在编译模块时)。然而,您不需要这样做。事实上,如果您使用的是IDE,那么您的源代码可能直接位于src
下(如果使用Maven/Gradle,则src/main/java
下)。
由于您可能会让您的IDE编译代码,因此我不建议创建名称与模块名称匹配的目录。
这是
模块信息。java
文件:
module com.example {
requires javafx.controls;
exports com.example.app to javafx.graphics;
}
这是
主.java
文件:
package com.example.app;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
public void start(Stage primaryStage) {
StackPane root = new StackPane(new Label("Hello, World!"));
Scene scene = new Scene(root, 500, 300);
primaryStage.setScene(scene);
primaryStage.setTitle("JPackage Example");
primaryStage.show();
}
}
下面是编译上述代码的命令。请注意,工作目录是项目目录。
javac --module-source-path src --module com.example -d out\classes
我有一个包含 JavaFX 的 JDK。如果没有,则需要确保将 JavaFX 放在模块路径上。例如:
javac --module-path <path-to-fx> --module-source-path src --module com.example -d out\classes
但同样,您可能会让IDE处理编译。
下面是打包现已编译的应用程序的命令。
jpackage --type app-image --name JPackageExample --module-path out/classes --module com.example/com.example.app.Main --dest out/package
--type
确定应用程序类型。在Windows上有三个选项:app-image(我相信所有平台都通用)、exe和msi。第一个选项将简单地创建一个分解目录(包含Windows上的exe文件)。后两个将为您的应用程序创建Windows安装程序。请注意,您必须在Windows上创建Windows包(MacOS和Linux也是如此)。
--dule
参数告诉工具主模块和类是什么(即应用程序的切入点)。它的格式是
同样,我有一个包含JavaFX的JDK。如果没有,请确保在
--module path
参数中包含JavaFX以及您自己的代码。重要提示:与编译过程不同,如果您将JavaFX与JDK分开,那么请确保将JavaFXJMOD文件放在模块路径上,而不是放在普通的JAR文件上;您可以从Glion(可能与您获得JavaFXSDK的位置相同)获取JMOD文件。请记住,JavaFX是特定于平台的。
上面的示例完全来自命令行。您可能使用IDE,因此某些步骤可能会有所不同。例如,您可以依靠IDE编译代码,如果需要,可以将其打包到JAR文件中。您甚至可以让IDE处理html" target="_blank">调用
jpack
,但我不确定。
> 控制器 } 服务 -板 > 原因:java。lang.IllegalArgumentException:给定的id不能为null!位于组织。springframework。util。明确肯定组织中的notNull(Assert.java:201)。springframework。数据jpa。存储库。支持简单Parepository。java上的deleteById(SimpleJpaRepos
我想使它从“游戏26”类到“游戏39”类,如果用户经历了从“游戏17”类到“游戏18”类。但如果用户没有通过,要使从“Game26”类到“Game30”类。
/tester.java:3:错误:import java.lang.Math类型的非法启动;^Tester.java:3:错误:应输入java.lang.Math>*;^
如何使用slick和lwjgl(轻量级java图形库)将eclipse导出为可运行的java文件? 所以,我对此做了一些研究,相信我已经找到了问题的根源,以及需要解决的问题,现在我需要找出如何解决它。 我有一个相当大的项目,使用slick和lwjgl。这两个都是按如下方式提供的。我在IDE中添加到java构建路径的jar文件(Eclipse INDIGO,以防您想知道在哪里)。 我的目标是将这个片
我在第一个场景上有一个简单的按钮,应该会导致第二个场景。当我点击按钮时,它改变场景,但只显示一个空白屏幕。如果我关闭原始舞台,然后显示一个包含新场景的新舞台,它会正常工作,但我不想打开一个新窗口。 这是我的控制器类: 主类:
我正在尝试连接mongodb和spring boot。我想配置使用抽象MongoClientConfiguration,MongoConfigurationSupport抽象类和MongoClient类,并使用MongoTemplate,MongoRepository和MongoClient。我不知道什么时候应该使用以下哪个maven依赖项: org.mongodbmongoDB驱动程序同步 or