使用java 9时无法执行maven-compiler-plugin:3.6.1:testCompile

2023-12-19

我知道有很多问题都有类似的错误。我很感激前面提到的重复点,因为它只发生在 Java 9 中。

我确实安装了java 9

C:\_pocs\ws_j9\java9-http-client>java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

C:\_pocs\ws_j9\java9-http-client>echo %JAVA_HOME%
C:\Program Files\Java\jdk-9.0.1

为了简化示例,如果我下载一个非常简单的示例https://examples.javacodegeeks.com/core-java/java-9-httpclient-example/ https://examples.javacodegeeks.com/core-java/java-9-httpclient-example/我尝试/

mvn 干净安装包 -e

[ERROR] Failed to parse module-info:
[ERROR] With qdox: null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.925 s
[INFO] Finished at: 2018-01-01T23:43:32+01:00
[INFO] Final Memory: 13M/44M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile (default-testCompile) on project http_client: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile failed: Failed to parse module-info -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile (default-testCompile) on project http_client: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile failed: Failed to parse module-info
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)

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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.javacodegeeks.java9</groupId>
    <artifactId>http_client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Java9HttpClient</name>
    <description>Java Http Client example</description>
    <properties>
        <java-version>1.9</java-version>

        <maven-compiler-plugin-version>3.6.1</maven-compiler-plugin-version>
        <maven-shade-plugin-version>3.0.0</maven-shade-plugin-version>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin-version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${maven-shade-plugin-version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java-version}</source>
                    <target>${java-version}</target>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.javacodegeeks.java9.http_client.Main</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

我有点困惑是什么导致了这个问题。除此之外,我还面临着另一个挑战,这对于第一次尝试使用 Java 9 的人来说有点困难:我的 Eclipse 无法正确接受 Java 9。我尝试在刚刚下载的 Eclipse Oxygen 中安装 Java 9 支持但我得到“没有找到存储库http://download.eclipse.org/eclipse/updates/none http://download.eclipse.org/eclipse/updates/none我无法让这个 mvn 插件将 Java 版本更新到 9(它曾经在 Java

    <properties>
        <java-version>1.9</java-version>
...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java-version}</source>
                    <target>${java-version}</target>
                    <verbose>true</verbose>
                </configuration>
            </plugin>

这就是我尝试从命令行编译 straich 的原因。

我读到 Java 9 带来了新的模块化概念,这将帮助我们更好地组织包,但我非常不确定这是否能促使我解决我的问题。当有人看到“无法解析模块信息”时,这可能是一些明显的解决方案,但我无法想象有什么有用的尝试。

我直接的问题是我可以检查什么来进行编译。使 Eclipse Oxygen 当前版本与 Java 9 兼容的另一个技巧也将受到赞赏。

  • Edited

不到 24 小时前下载适用于 Windows 的 Eclipse 版本:

面向 Web 开发人员的 Eclipse Java EE IDE。

版本:Oxygen.2 发布 (4.7.2) 内部版本号:20171218-0600

  • 第二次编辑了

从 1.9 更改为 9 后,红色错误图标消失了,我现在有了 Java 9。尽管如此,现在我收到了此错误:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.542 s
[INFO] Finished at: 2018-01-02T05:19:30+01:00
[INFO] Final Memory: 9M/30M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project http_client: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

这对我来说没有意义,因为:

  • 已编辑第三次

简而言之,添加一个名为的缺失/放错位置的类module-info.java将项目的模块声明包含在项目的源根目录中。 (例如src/main/java)

另外,请注意升级到3.7.0版本 https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw of the maven-compiler-plugin如果你有评论包含在您的module-info class https://issues.apache.org/jira/browse/MCOMPILER-289。 [日志似乎与此非常相关。]


或者另一种方式,如果您希望使用以前版本的 Java 编译项目,则使用release https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#release标记为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    <configuration>
        <release>8</release>
        <verbose>true</verbose>
    </configuration>
</plugin>

Concepts

以Java9为标志项目完成Jigsaw http://openjdk.java.net/projects/jigsaw/其中介绍了Java 平台模块系统 (JPMS) http://cr.openjdk.java.net/%7Emr/jigsaw/spec/,项目构建在 Java 版本 9 及更高版本上将被模块化。这将包括一个名为的主要编译类module-info.class就是那个模块的声明 https://docs.oracle.com/javase/specs/jls/se9/html/jls-7.html#jls-7.7.

The 初稿 http://openjdk.java.net/projects/jigsaw/spec/sotms/2015-09-08最终模块系统的状态 http://openjdk.java.net/projects/jigsaw/spec/sotms/最好地描述了所遵循和实践的概念。


关于制作 Eclipse Oxygen 当前版本的另一个技巧 兼容Java 9

据我所知最新的 Oxygen 版本(此时为 Oxygen.2) https://www.eclipse.org/downloads/packages/release/Oxygen/2Eclipse 中的版本旨在与 Java9 兼容,不再需要任何额外的插件支持。


其他有用的资源:

  • JDK9迁移指南 https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-7744EF96-5899-4FB2-B34E-86D49B2E89B6

  • Maven 编译器插件关于模块信息包含和排除的示例 https://maven.apache.org/plugins/maven-compiler-plugin/examples/module-info.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用java 9时无法执行maven-compiler-plugin:3.6.1:testCompile 的相关文章

随机推荐