0

所以我用 Maven 做了一个非常简单的 java 项目,其中我使用了一个 Libary jnativehook,在 intellij 中它工作得很好但是当我使用 jlink 导出它时,这个警告出现了

Required filename-based automodules detected. Please don't publish this project to a public artifact repository!

后跟此错误消息

Failed to execute goal org.openjfx:javafx-maven-plugin:0.0.6:jlink (default-cli) on project hellofx: Error

我搜索过,但没有任何帮助

这是我的 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>org.openjfx</groupId>
<artifactId>hellofx</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.release>11</maven.compiler.release>
    <javafx.version>17.0.0.1</javafx.version>
    <javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>com.1stleg</groupId>
        <artifactId>jnativehook</artifactId>
        <version>2.1.0</version>
    </dependency>

</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <release>${maven.compiler.release}</release>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>${javafx.maven.plugin.version}</version>
            <configuration>

                <launcher>hellofx</launcher>
                <mainClass>Listener</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

和我的 module-info.java

module Listener {


requires javafx.controls;
requires javafx.fxml;
requires jnativehook;
requires java.logging;


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

所以我测试了一些东西,我删除了与 jNativeHook https://github.com/kwhat/jnativehook有关的所有内容,它有效,但我需要 jNativehook 有没有人有解决这个问题的想法或者有没有人有类似的问题

4

2 回答 2

0

首先要了解问题: “检测到基于文件名的必需自动模块”是什么意思。警告是什么意思?

解决方案可能只是使用最新版本的依赖项: https : //mvnrepository.com/artifact/com.github.kwhat/jnativehook/2.2.1 请注意 goupId 已更改!您正在使用旧的并且依赖项的主页(您自己提供了链接)为您提供了正确的 groupId - 您应该真正使用它。

如果这不能解决问题,则需要修复该依赖项,您应该联系依赖项的作者。

但据我所见,它应该可以工作 - 但请注意您的 module-info.java 应该使用 com.github.kwhat.jnativehook 而不是 jnativehook。

于 2021-12-28T16:23:38.597 回答
0

您在 pom 中的 artifact-id 是 hellofx,而您的模块名称是 Listener。将您的模块名称更改为 hellofx 或将 pom 中的 artifact-id 更改为 Listener。使两者相同。

于 2021-12-25T19:12:18.613 回答