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

无法使用MediaPlayer类,找不到javafx.media

梁才
2023-03-14

我试图建立一个虚拟钢琴应用程序,我需要MediaPlayer类来播放音符,我的项目是一个模块化的maven项目,包含fxml,javafx 11.0.2和java 14。

我无法导入 MediaPlayer 类的问题,我试图添加需要 javafx.media; 到我的模块信息中.java但它无论如何都无法识别它。这是我的模块信息.java

module org.project {
    requires javafx.controls;
    requires javafx.fxml;

    opens org.project to javafx.fxml;
    exports org.project;
}

也尝试下载库jar,但它是空的。

还试图在pom中添加maven依赖项。xml文件,如下所示:

<!-- https://mvnrepository.com/artifact/org.openjfx/javafx.media -->
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx.media</artifactId>
    <version>11.0.0-ea1</version>
    <type>pom</type>
</dependency>

我的pom.xml依赖项:

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11.0.2</version>
    </dependency>

    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11.0.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx.media -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx.media</artifactId>
        <version>15</version>
        <type>pom</type>
    </dependency>
</dependencies>

它显示没有找到存储库。

共有2个答案

戚阳
2023-03-14

我发现了我的错误,我需要添加javafx。我安装javafx的目录中的媒体,如下C:\Program Files\openjfx-14.0.2.1_windows-x64_bin-sdk\javafx-sdk-14.0.2.1\lib

要做到这一点,我需要去文件

然后我选择了javafx.media.jar

这样做后,module-info.java可以识别模块。

单于煌
2023-03-14

注意:此答案也适用于其他JavaFX模块,例如fxml和web。

javafx.media是一个模块,您需要在module-info.java中要求它,就像您对javafx.controlsjavafx.fxml所做的那样。

module org.project {
    requires javafx.controls;
    requires javafx.fxml;
    requires javafx.media;

    opens org.project to javafx.fxml;
    exports org.project;
}

可能还有其他问题,但这是一个可能的问题。

我不建议使用< code>11.0.0-ea1版本,还有更稳定的版本。JavaFX的最新稳定版本是15 https://mvnrepository . com/artifact/org . open jfx/javafx-media/15,所以我建议您对所有Java FX依赖项使用该版本。

<!-- https://mvnrepository.com/artifact/org.openjfx/javafx.media -->
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-media</artifactId>
    <version>15</version>
    <type>pom</type>
</dependency>

对于以后提到这篇文章的读者,请使用mvnrepository或类似搜索工具可以找到的最新非早期访问版本。

试图下载库jar,但它是空的

不要为JavaFX依赖项这样做。JavaFX需要同时包含本地库和Java库。仅仅下载Jar文件可能不适合您,因为您可能会丢失所需的内容。此外,可能需要对库进行可传递的导入,这一点再次说明,仅仅下载一个jar是无法实现的。您已经在Maven中使用了依赖层次结构构建工具,只需正确配置和使用它,让它完成它的工作。

此外,我认为< code>javafx.media工件被错误地命名、配置并上传到maven central,这就是为什么它在那里只作为< code>11.0.0-ea1版本存在。它应该被命名为< code>javafx-media,这是后续上传中的名称,所以请为工件使用正确的名称,这样最新的版本就包含了maven中央存储库中所有正确的工件数据。

我的pom.xml依赖项

您的 pom.xml 依赖项混合了 JavaFX 版本,用于不同的 JavaFX 依赖项。不要这样做,不同的版本将不兼容。对所有 JavaFX 依赖关系使用相同的版本。

我去存档了

您应该让您的IDE重新导入更新的maven项目并自动解析依赖项,而不是手动将库添加到IDE项目中。

有关Idea,请参见:

  • 如何让 IntelliJ IDEA 从 Maven 更新我的依赖项?

对于其他 IDE,过程会有所不同。

如果您想使用WebView、FXML或控件,请在此处使用示例模块和依赖项名称。

使用这些模块的所有步骤与javafx相同。media模块,只有名称更改。

示例模块名称:

javafx.web
javafx.swing
javafx.fxml
javafx.media
javafx.controls

示例依赖项项目名称:

javafx-web
javafx-swing
javafx-fxml
javafx-media
javafx-controls
 类似资料:
  • 问题内容: 我试图从命令promopt运行一个示例Java应用程序,但出现以下错误: 我用来尝试运行此应用的命令是: 所有相关文件都位于当前工作目录中(.java,.class和.jar文件) 我用来构建.class文件的命令如下(有2个.java文件): 再次从同一工作目录运行-的内容(或多或少): 我试图以C#开发人员的身份学习Java,所以我在编程概念方面拥有深厚的背景,整个Java工具链目

  • 我在我的项目中使用 jQuery 时遇到了问题(使用 Angular 和 boosted,这是引导程序的一个分支)。错误如下: 文件夹/包含/my/component.ts中的错误:错误TS2581:找不到名称“$”。您需要为jQuery安装类型定义吗?尝试。 我已经安装了< code>@types/jquery和< code>jquery,并且在angular.json文件中添加了脚本:

  • 问题内容: 当我尝试在IntelliJ中创建项目时,在此行上收到以下错误: 错误: 是实现 接口* 的类 * 所有软件包都存在,我可以跳转到每个接口或类的声明,但是我不知道为什么IntellJ说它无法访问或找到它们?但是是接口而不是类 上面的声明位于一个名为jar的jar文件中,并且存在于Project图书馆员中。 问题答案: 该项目包含几个模块。在将库添加到项目库后,某些模块在其依赖项中缺少它。

  • 问题内容: 最近进入一个新项目,我正在尝试编译我们的源代码。昨天一切正常,但是今天又是另一个故事了。 每次我在模块上运行时,一旦通过测试,就会崩溃为错误: 后来: 我正在使用OpenJDK 1.8.0_181,Maven 3.5.4 在Debian 9 (Stretch)64位​​上运行,并在我的中配置了公司代理。 如果我没记错的话,最新的Surefire版本是2.22.1,这很奇怪。我试图指定插

  • SNMPAgent。JAVA snmp代理类使用的托管对象:MOCreator。JAVA SNMPManager。JAVA TestSNMPAgent.java 这就是我编译代码的方式(我已经有snmp4j和api的代理. jar文件) javac-d.-cp"snmp4j-2.5.0.jar:snmp4j-agent-2.5.0.jar"*. java 这就是我执行代码的方式 Java-cp"s

  • 在Eclipse中,我使用JavaFX、Maven和jre 1.8。0_45。 通常,当我尝试以这种方式使用Maven编译时(运行方式- 当我将其更改为jdk(在配置、窗口属性、maven配置中随处可见)并尝试运行/构建/编译/无论遇到什么错误 没有给我上课。就这个。 我通过在我的pom中添加到javac的路径并保留jre包来解决这个问题 这是可行的。 但我还是想知道——为什么会发生这种错误?我做