当前位置: 首页 > 知识库问答 >
问题:

如何在Linux机器上编译使用JavaFx的Java源代码(使用javac 11.0.13)?[副本]

长孙鸿
2023-03-14

行import javafx。应用应用程序 给了我以下编译时错误:
错误:包javafx。应用程序不存在

我正在使用LinuxLite 5.6(Ubuntu 20.04)和java--version给我:

openjdk 11.0.13 2021-10-19 LTS
OpenJDK Runtime Environment Corretto-11.0.13.8.1 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.13.8.1 (build 11.0.13+8-LTS, mixed mode)

共有1个答案

薛华奥
2023-03-14

我认为JavaFX是与Java SDK结合在一起的,但自JDK 11以来,情况似乎就不是这样了
为了编译和运行JavaFX应用程序,需要JavaFX SDK(不再与Java SDK一起提供)。

为了能够编译和运行JavaFX应用程序,需要遵循以下步骤:

第1步。检查是否已安装Java

您可以通过在终端中运行Java--version来检查是否安装了Java。输出应如下所示:

openjdk 17.0.1 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-39)
OpenJDK 64-Bit Server VM (build 17.0.1+12-39, mixed mode, sharing)

如果您得到类似的输出(请注意,您可以安装不同的版本),然后进行步骤3。
如果您收到一个错误,这可能意味着您没有安装Java,您需要安装它。(转到下一步)

第2步。安装/下载Java

您可以在这里找到Java SDK以供下载<单击JDK 17
从构建中选择并下载适合您系统的版本
将其保存在系统中的某个位置。我将使用程序。

建议您也检查文件的总和。

为此,请下载您选择的Java版本旁边的sha256文件,并将其保存在您保存Java存档的位置。

打开一个终端或使用现有的终端和cd,将其放在下载Java归档文件和的位置。sha256文件。

目前我写这sha256Linux /x64不包含文件名。

您可以编辑。sha256文件,并在校验和后的第一行添加2个空格,后跟下载的Java归档文件的名称,您可以运行echo

它应该是这样的:1c0a73cb863aad579b967316bf17673b8f98a9bb938602a140ba2e5c38f880a openjdk-17.0.1\u linux-x64\u bin。焦油gz,

然后运行sha256sum-c

或者,如果不想编辑文件,则可以运行test$(sha256sum

第一种方法的输出应为<代码>

使用命令tar-xvzf提取存档

转到通过提取文件创建的目录,在我的示例中是jdk-17.0.1,然后运行/bin/java—版本,用于检查java是否正确下载并正常工作。

现在您可以从任何地方使用java和javac命令,或者您可以转到步骤3...

方法一:别名

添加

alias javac="<path/to/jdk>/bin/javac" 
alias java="<path/to/jdk>/bin/java" 

至<代码>~/。bashrc(或等效版本,取决于发行版/shell)

方法2:将bin文件夹添加到PATH环境变量

添加导出路径=$路径:

步骤3.安装/下载JavaFX

转到此处,转到下载部分,选择适合您系统的SDK并下载。最终检查sha256总和。

使用解压缩来提取存档

为了简单起见,您可以为编译和运行JavaFX应用程序添加别名。我正在使用以下内容:

alias java='/home/kamui/Programs/jdk-17.0.1/bin/java' 
alias javac='/home/kamui/Programs/jdk-17.0.1/bin/javac'
alias javafx='java --module-path /home/kamui/Programs/javafx-sdk-17.0.1/lib --add-modules javafx.controls,javafx.fxml'
alias javafxc='javac --module-path /home/kamui/Programs/javafx-sdk-17.0.1/lib --add-modules javafx.controls,javafx.fxml'

注意,您不需要添加javafx。如果不使用fxml

步骤4.编译

单个源代码文件

对于单个源代码文件,如HelloFX。java您可以运行以下命令:

# make sure you are in the directory where HelloFX.java is located 
javafxc HelloFX.java # to compile it 
javafx HelloFX # to run it 

这些步骤的源代码,您也可以在其中找到HelloFX。java文件为https://openjfx.io/openjfx-docs/#install-javafx

多个源代码文件

对于更复杂的目录结构,如以下目录结构(这正是IntelliJ在创建新的JavaFX项目时提供的内容),您可以执行以下操作:

确保您位于src所在的文件夹中。

使用javafxc-d编译/out-sourcepath src/src/main/java/com/example/a7/HelloApplication。java

运行:
javafx-classpath./outcom.example.a7. HelloApplication注释:

  1. 我不知道module-info.java是什么或做什么。
  2. 当我使用CLI为JavaFX项目编译IntelliJ生成的代码时,它在运行时失败(更具体地说,在加载FXML时),因为它似乎只能在out文件夹中找到它(我使用getClass(). getResources()和getClass(). getClassLoader(). getResource())
    为了解决这个问题,您可以将. fxml文件移动/复制到out文件夹中的某个位置,并在代码中为FXMLLoader设置正确的路径。

 类似资料:
  • 我在web服务器上编译并发布了一个项目。 最新源代码的副本丢失了。我现在有一份旧的。在这一份代码之后,进行了很多更改。 如何使源代码副本与web服务器上的代码保持同步。web服务器上的代码是编译的,我尝试使用- Telerik JustDecompiler DotPeek 红门。网状反射镜 当这些应用程序反编译代码时,语法也会发生变化。 你认为合并我的代码最好的方法是什么?

  • 问题内容: 我想知道如何从Windows Shell中使用JavaFX编译代码。 我在以下代码fxservidor.java: 问题答案: Oracle Java 8 如果您使用的是Oracle Java 8或更高版本(如cayhorstmann在其回答中所指出),则JavaFX类现在位于Oracle Java实现的默认运行时类路径上。您可以直接运行javac,并java在你的程序和JavaFX类

  • 问题内容: 我一直在尝试将Notepad 设置为一个小的Java环境,主要是为了学习Java,因为我很难获得一个简单的程序来与NetBeans一起使用,不幸的是,有关设置Notepad 来调用Java代码的所有建议均不起作用。 我猜notepad ++发生了变化,或者Java开发工具包已经进行了大规模修改,因为我使用的所有示例都会导致错误,即使错误的余地很小。 首先,我找到了这个网站:http :

  • 问题内容: 我正在寻找Sun标准Java编译器的源代码。 jdk1.6.0_07有一些相关的类,但它们是接口(和)。在和下还有一些包,它们似乎是表示Java抽象语法树的接口。 但是我找不到编译器源-有人知道它在哪里吗? 问题答案: 检查此站点Java编程语言编译器(javac)组。来源在Mercurial存储库中。 jdk7 / tl / langtools(对于JDK 1.7) jdk6 / j

  • 我有一个JavaFX项目,希望使用GraalVM Java虚拟机和相关的本机映像工具将其编译成Linux二进制文件。我正在使用GraalVM Java 11版本20.1.0和本机Image Maven插件来实现这一点,该插件是通过Maven添加的。 最初,我收到一个错误,说明我使用本机映像跟踪代理生成用于反射的配置文件,我将其传递到编译器插件中,如下所示: 我还打开了堆栈跟踪异常报告。 现在,当我

  • 问题内容: 我们已经构建了一个Go包,供我们许多人使用。 它是使用标准方法导入的。 但是,在编译时,我们所有的实用程序(包括很小的实用程序)最终都是很大的二进制文件。 我们提取了实用程序中的所有字符串,并发现整个软件包都被编译到每个实用程序中。包括那些实用程序未使用的功能。 编辑1: 谢谢回答这个问题的人。 这是我们所看到的: main.go play / subplay.go 永远不会调用函数B