使用Intellij 2021.3.2,JavaFX版本:11.0.2+1。
我正在尝试将 JavaFX WebView 添加到我的应用程序中。我的导入语句无法编译:
import javafx.scene.web;
Run Code Online (Sandbox Code Playgroud)
编译错误:
java:找不到符号符号:类Web位置:包javafx.scene
据我所知,JavaFX 版本 11 应该包含 .web 包。也许我必须安装一些特定的东西才能使用它?
我正在使用 Eclipse (javafx) 和 Scene Builder 开发应用程序,我需要使用 webview。我的程序运行顺利,但是当我将 webview 组件添加到锚点窗格中时,出现此错误。
Caused by: java.lang.ClassNotFoundException: javafx.scene.web.WebView
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at javafx.fxml/javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2931)
at javafx.fxml/javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2920)
at javafx.fxml/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2861)
... 16 more
Exception running application view.Main
Run Code Online (Sandbox Code Playgroud)
我尝试使用初始化函数但仍然遇到相同的错误,有人能告诉我为什么吗?提前致谢。
我尝试按照以下位置的说明使用 JavaFX:
https://openjfx.io/openjfx-docs/下的“JavaFX 和 IntelliJ”->“非模块化 Maven”
完成步骤 1 和 2(安装和验证)后,我尝试从 IntelliJ 而不是通过 Maven 插件运行一个非常简单的程序。
TraderWindow.java
public class TraderWindow extends Application {
@SneakyThrows
public static void main(String[] args) {
launch(args);
}
@Override
@SneakyThrows
public void start(Stage primaryStage) {
Scene scene = FXMLLoader.load(getClass().getResource("/TraderWindow.fxml"));
primaryStage.setScene(scene);
primaryStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
交易窗口.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" …Run Code Online (Sandbox Code Playgroud) 我是 Java 新手,目前正在阅读文本并学习。我已经在我的目录中安装了 JDK /opt(在 Kubuntu 上工作)。我还在/opt. 由于我使用了终端,每当我想编译或运行涉及 JavaFX 模块的内容时,我都会使用
javac --module-path $PATH_TO_FX --add-modules ALL-MODULE-PATH className.java
但是,当我尝试同样的事情时,jshell它不会起作用。那是,
jshell --module-path $PATH_TO_FX --add-modules ALL-MODULE-PATH
我想知道的是,有没有什么方法可以安装 JavaFX SDK,以便它与 Java SDK 目录合并,这样每当我想编译/运行需要任何模块的程序时,我就不必使用这些标志来自JavaFX?
如果没有,谁能告诉我为什么jshell上面的命令不能按我的预期工作?
我有一个问题,无法在我的 JavaFX 项目中导入 MediaPlayer。我正在使用 IntelliJ 和 Maven 构建,JDK 17 ..我更新了 Maven 依赖项,并且安装了 JavaFX 插件,但它仍然无法工作。.提前感谢您的任何答案/建议
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>demo</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>5.7.1</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17.0.0.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>17.0.0.1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.7</version>
<executions>
<execution>
<!-- Default configuration for running with: mvn clean …Run Code Online (Sandbox Code Playgroud) 我是 Maven 新手。我需要包括
private javafx.embed.swing.JFXPanel jFXPanel1;
Run Code Online (Sandbox Code Playgroud)
使用 Maven + Jigsaw 模块的新项目。
我的包有以下问题javafx.embed.swing。
我以为添加这个依赖项会起作用,但事实并非如此。
private javafx.embed.swing.JFXPanel jFXPanel1;
Run Code Online (Sandbox Code Playgroud)
在全新安装时,我看到以下内容
(包 javafx.embed.swing 在未命名模块中声明,但模块 com.my.module 不读取它)
我不明白这一点。我看到那个JAR,它只有一个清单文件,没有任何.class文件,这让我更加困惑。
如果我查看 m2 文件夹,我会看到一个不同的 JAR,具有相同的前缀,但带有win后缀,并且在那里我看到了该包。
我认为这就是分类器
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-swing -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swing</artifactId>
<version>19</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我想,但我不知道,这个 jar 是否被 Maven 选择,但似乎没有,因为我在 IntelliK 库中没有看到它。
我对 JavaFX 没有任何问题,一切都是模块化的并且正在运行。我只有这个罐子有问题。
- - - - - - - - - - - - - - -更新 - - - - - - - - - - ----------------
这里的罪魁祸首是 IntellijIdea,我确实单击了 …
javafx ×6
java ×3
webview ×2
installation ×1
java-14 ×1
java-platform-module-system ×1
javafx-11 ×1
maven ×1
media-player ×1
scenebuilder ×1
sdk ×1
swing ×1