java - 在 Java9 中将孵化器 Http 类与 Maven 一起使用

标签 java maven java-9

我在用什么

Java 9 + Maven + HttpClient(来自 java 9)jdk.incubator.http.HttpClient

问题

在使用maven构建我的项目时出现以下错误

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project Core: Compilation failure: Compilation failure:
[ERROR] Foo.java:[4,21] package jdk.incubator.http is not visible

Foo 的第 4 行是

import jdk.incubator.http.HttpClient;

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>me.bar</groupId>
    <artifactId>foo</artifactId>
    <version>0.0.0-SNAPSHOT</version>
</parent>

<artifactId>Core</artifactId>

<build>
    <finalName>${project.artifactId}</finalName>
    <sourceDirectory>${project.basedir}/src</sourceDirectory>


    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.0.0</version>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>9</source>
                <target>9</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <minimizeJar>true</minimizeJar>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

注意事项

抱歉,如果您认为这有一个不经意的修复,我对 maven 不是很在行,并且以前从未处理过孵化器类。我已经搜索了错误,但没有找到任何有用的信息。感谢您的帮助。

最佳答案

创建模块时,您需要在包的最顶层创建一个module-info.java 类,此后应包括

module yourModule {
    requires jdk.incubator.httpclient;
}

确保模块 jdk.incubator.httpclient 导出的包 jdk.incubator.http 对您的模块可见。

或者,要创建常规类路径应用程序,您可以

编译使用:-

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    <configuration>
        <source>9</source>
        <target>9</target>
        <compilerArgs>
            <arg>--add-modules</arg>
            <arg>jdk.incubator.httpclient</arg>
        </compilerArgs>
    </configuration>
</plugin>

运行使用:-

java -jar --add-modules=jdk.incubator.httpclient yourJar.jar

关于java - 在 Java9 中将孵化器 Http 类与 Maven 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47446481/

相关文章:

java - Maven Sonar 构建期间的 SonarQube “Class not found: javax.xml.rpc.handler.MessageContext”

java - Maven:使用其 ftp 地址在本地存储库中安装 jar

java - 如何在不知道 Java 9 中 jar 文件的包名或文件系统路径的情况下列出所有资源

java - intellij 上的 vertx-hk2 和 vertx-jersey 拆分包问题

java - 如何解决 Java 9 中与分段代码缓存相关的内存问题?

java - 无法写入 JSON 和 .JsonMappingException : Infinite recursion (StackOverflowError) error

java - 如何在字符串中查找与正则表达式模式不匹配的字符

java - 设置系统语言

Java LocalDate - 保存在 MongoDB 中时,时间会附加到日期上吗?

java - 安卓/gradle : not able to use repository