【问题标题】:Java 9: module not found: primefacesJava 9:找不到模块:primefaces
【发布时间】:2018-03-29 07:26:21
【问题描述】:

我正在将一个 webapp 项目迁移到使用 primefaces 的 Java 9。

在 maven pom.xml 中,primefaces 已正确声明:

<dependencies>
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>6.0</version>
    </dependency>
 ...
</dependencies>

在 module-info.java 中,我添加了 - 如 IntelliJ 所示 - “需要 primefaces;”。所以看起来:

module sharedwebapp {
    ...
    requires primefaces;
    ...
}

对于其他第三方组件,这运作良好。但是对于 primefaces,我在执行 mvn clean install 时遇到以下错误:

 >...shared-webapp/src/main/java/module-info.java:[9,14] module not found: primefaces

有什么我想申报的吗? 还有什么要补充的吗?

【问题讨论】:

  • jar --file=primefaces-6.0.jar --describe-module 打印什么?
  • 试图在How to use 3rd party library in Java9 module?列出包括上述步骤在内的步骤
  • @AlanBateman: C:\Users\demo\.m2\repository\org\primefaces\primefaces\6.0>jar --file=primefaces-6.0.jar --describe-module Moduldeskriptor kann nicht abgeleitet werden f³r: primefaces-6.0.jar Provider class INSTALL not in module ---- 所以这似乎是:No module descriptor found.
  • 这是说不能为库派生模块描述符,这意味着它不能用作自动模块。你能检查一下 META-INF/services 目录吗,它表明有一个名为“INSTALL”的服务提供程序不在 JAR 文件中。

标签: java maven primefaces java-9


【解决方案1】:

经过 Alan 的提示(参见上面的评论),结果发现以下文件中有一个令人讨厌的文本“INSTALL”:

primefaces-6.0.jar/META-INF/services/org.atmosphere.cpr.AtmosphereFramework

INSTALL
org.primefaces.push.impl.PushEndpointMapper
org.primefaces.push.impl.PushEndpointInterceptor

但显然只有预期的课程。所以我采取了一个蛮力解决方案删除这个文本'INSTALL':

org.primefaces.push.impl.PushEndpointMapper
org.primefaces.push.impl.PushEndpointInterceptor

运行 mvn clean install 现在就像一个魅力...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2019-07-17
    • 2020-02-21
    • 2018-06-22
    • 1970-01-01
    • 2018-10-25
    • 2018-04-06
    相关资源
    最近更新 更多