Netbeans + Java 9模块+ Log4j 2.11 =未找到模块

时间:2018-05-28 14:01:28

标签: java maven netbeans log4j java-9

我使用Apache Netbeans 9 Beta 9(2018年2月22日)。我有一个Java 9模块应用程序。我想将Log4j 2集成到我的应用程序中。这是我的modile-info.java

module ru.itlect.remka.agent {

    exports ru.itlect.remka.agent;

    requires ru.itlect.remka.commons;
    requires org.apache.logging.log4j.core;
    requires org.apache.logging.log4j;

    requires static spring.context;
    requires java.logging;
    requires java.xml;
    requires java.sql;
    requires java.desktop;
    requires java.naming;
    requires java.rmi;

    requires static javafx.graphics;
    requires static javafx.controls;
}

Netbeans说找不到org.apache.logging.log4j模块。虽然org.apache.logging.log4j.core没问题。当我构建项目时,它已成功构建。所以问题出在Netbeans本身。 java --list-modules表示org.apache.logging.log4j位于log4j-api-2.11.0.jar。 如果我输入requeres log,Netbeans会建议log4j.api log4j-api-2.11.0.jar的自动模块名称。思想Netbeans说log4j.api也找不到。

我可以使用module-info.java中的常量错误消息,但是Netbeans看不到log4j-api-2.11.0.jar中的任何类,所以我在任何使用记录器的类中都有错误。 如何让Netbeans看到模块?

这是我的pom.xml的一部分:

<dependencies>

    <!-- Ремка -->
    <dependency>
        <groupId>ru.itlect.remka</groupId>
        <artifactId>commons</artifactId>
        <version>1.0.0</version>
    </dependency>

    <!--Spring-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.0.6.RELEASE</version>
    </dependency>

    <!-- Аннотации -->
    <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.5</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- Logs -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.11.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.11.0</version>
    </dependency>
</dependencies>

1 个答案:

答案 0 :(得分:0)

我也无法更新某些应用程序以使用Log4j2 V2.11.1作为模块。我创建了一个简单的测试用例,并将其放在Netbeans用户邮件列表中。

从今天早些时候开始,发现并修复了最新版本的Netbeans 9中的错误。 Pull request 941(Geertjan今天上午批准)进行了解释。邮件列表(users@netbeans.incubator.apache.org)包含一些建议,可用于在将修补程序合并到新版本中之前解决该问题。一个新版本正在进入NetCAT (Community Acceptance Testing)进程。开发人员希望社区提供帮助以更快地完成它,这可能是最好的方法。

如果您需要立即解决方案,那么讨论中建议的一种方法是编辑jar文件,将module-info.class文件移到根结构中。