JavaFX 项目出错:ImageIO 和 BufferedImage 不可见
Posted
技术标签:
【中文标题】JavaFX 项目出错:ImageIO 和 BufferedImage 不可见【英文标题】:Error with JavaFX Project: ImageIO and BufferedImage not visible 【发布时间】:2021-12-25 00:34:05 【问题描述】:我正在改进我在 2018 年创建的 JavaFX 项目。我有原始的主脚本,但现在似乎有 2 个与 FX 相关的错误。 import javax.imageio.ImageIO; import java.awt.image.BufferedImage;
我正在使用 Apache NetBeans 和 Maven 版本 12.5,我正在使用 OpenJDK 17 和 OpenJFX 17。
错误是说这些包不可见,并且它们在模块 java.desktop 中声明但模块 com.mycompany.realestate2021 没有读取它。
以下 pom.xml 部分
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>RealEstate2021</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>13</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.4</version>
<configuration>
<mainClass>com.mycompany.realestate2021.App</mainClass>
</configuration>
<executions>
<execution>
<!-- Default configuration for running -->
<!-- Usage: mvn clean javafx:run -->
<id>default-cli</id>
</execution>
<execution>
<!-- Configuration for manual attach debugging -->
<!-- Usage: mvn clean javafx:run@debug -->
<id>debug</id>
<configuration>
<options>
<option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:8000</option>
</options>
</configuration>
</execution>
<execution>
<!-- Configuration for automatic IDE debugging -->
<id>ide-debug</id>
<configuration>
<options>
<option>-agentlib:jdwp=transport=dt_socket,server=n,address=$jpda.address</option>
</options>
</configuration>
</execution>
<execution>
<!-- Configuration for automatic IDE profiling -->
<id>ide-profile</id>
<configuration>
<options>
<option>$profiler.jvmargs.arg1</option>
<option>$profiler.jvmargs.arg2</option>
<option>$profiler.jvmargs.arg3</option>
<option>$profiler.jvmargs.arg4</option>
<option>$profiler.jvmargs.arg5</option>
</options>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
How do I fix this issue(s)?
【问题讨论】:
你原来的JavaFX项目是modular吗?也许您可以发布您的pom.xml
文件?您还可以发布您收到的整个错误消息吗?
【参考方案1】:
检查您的项目的module-info.java
,并确保其中包含“java.desktop”行:
module xyz
requires transitive java.desktop;
...
这声明您的项目使用来自 java.desktop 的定义 - 其中包括 BufferedImage。您可能还需要 JavaFX 的声明,例如:
requires transitive javafx.base;
requires transitive javafx.controls; // etc
requires transitive javafx.graphics;
【讨论】:
谢谢,我在以上是关于JavaFX 项目出错:ImageIO 和 BufferedImage 不可见的主要内容,如果未能解决你的问题,请参考以下文章
将项添加到comboBox javaFx FXML时出错[重复]