首页 > 解决方案 > 无法从 some.jar 中提取模块名称:在顶级目录中找到了 some.class(模块中不允许使用未命名的包)

问题描述

我们正在将我们的软件迁移到 Java 9。我正在开发的应用程序使用非常旧的 Java 库,并且没有机会更新它们。这是我们的pom.xml文件片段:

<project>
    <repositories>
        ..our private repositories
    </repositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                    <executable>javac10</executable>
                </configuration>

            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.latencybusters.lbm</groupId>
                    <artifactId>UMSJMS</artifactId>
                    <version>5.3.6</version>
                    <classifier>windows</classifier>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

我们当前的操作系统是Windows. 所以问题在于 com.latencybusters.lbm 库。

Intellij Idea不突出module-info.java文件以及任何其他类。因此,预计该项目将被编译。但是跑步mvn clean compile -X会返回

...
[WARNING] Can't extract module name from UMSJMS-5.3.6-windows.jar: lbmmsrc.class found in top-level directory (unnamed package not allowed in module)
...
module-info.java: module not found: UMSJMS

这个错误的原因可能是什么?

标签: javamavenjava-9

解决方案


推荐阅读