当前位置: 首页 > 知识库问答 >
问题:

制作模块jdk。恒温箱httpclient在运行时可见

袁晟
2023-03-14

如何从模块jdk生成类。恒温箱httpclient是否在运行时可见?

Java9Maven HttpClientjdk。恒温箱http。HttpClient

=

=

java.lang.NoClassDefFoundError: jdk/incubator/http/HttpClient
at com.foo.Bar.Bar.<clinit>(Bar.java:56) ~[?:?]
at java.lang.Class.forName0(java.base@9-Ubuntu/Native Method) ~[?:?]
at java.lang.Class.forName(java.base@9-Ubuntu/Class.java:374) ~[?:?]
Caused by: java.lang.ClassNotFoundException: jdk.incubator.http.HttpClient
at java.net.URLClassLoader.findClass(java.base@9-Ubuntu/URLClassLoader.java:388) ~[?:?]
at java.lang.ClassLoader.loadClass(java.base@9-Ubuntu/ClassLoader.java:486) ~[?:?]
at java.lang.ClassLoader.loadClass(java.base@9-Ubuntu/ClassLoader.java:419) ~[?:?]
at com.foo.Bar.Bar.<clinit>(Bar.java:56) ~[?:?]
at java.lang.Class.forName0(java.base@9-Ubuntu/Native Method) ~[?:?]
at java.lang.Class.forName(java.base@9-Ubuntu/Class.java:374) ~[?:?]
<build>
    <finalName>${project.artifactId}</finalName>
    <sourceDirectory>${project.basedir}/src</sourceDirectory>

    <resources>
        <resource>
            <targetPath>.</targetPath>
            <filtering>true</filtering>
            <directory>${project.basedir}/resources</directory>

            <includes>
                <include>plugin.yml</include>
            </includes>
        </resource>
    </resources>

    <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 shade插件作为我的依赖项,但是因为jdk。恒温箱http。HttpClient是JDK的一部分,它不包括在我的jar中。

正在尝试以以下方式执行:

 java -jar --add-modules jdk.incubator.httpclient uhc-staging.jar

结果导致以下异常:

Error occurred during initialization of VM 
java.lang.module.ResolutionException: Module jdk.incubator.httpclient not found 
at java.lang.module.Resolver.fail(java.base@9-Ubuntu/Resolver.java:790) 
at java.lang.module.Resolver.resolveRequires(java.base@9-Ubuntu/Resolver.java:94)
at java.lang.module.Configuration.resolveRequiresAndUses(java.base@9-Ubuntu/Configuration.java:370)
at java.lang.module.ModuleDescriptor$1.resolveRequiresAndUses(java.base@9-Ubuntu/ModuleDescriptor.java:1986)
at jdk.internal.module.ModuleBootstrap.boot(java.base@9-Ubuntu/ModuleBootstrap.java:263)
at java.lang.System.initPhase2(java.base@9-Ubuntu/System.java:1927)

共有1个答案

南门建章
2023-03-14

在讨论中,提出的细节是:-

java --list-modules

不包括jdk。恒温箱httpclient作为一个模块,这就是引发j.l.m.ResolutionException的原因。因此,解决方案应是将安装的JDK版本升级到最新版本(应包括孵化器模块),然后尝试使用建议的相同命令运行应用程序:-

java -jar --add-modules jdk.incubator.httpclient uhc-staging.jar
 类似资料:
  • 使用JDK/11的早期access构建编译基于Java-9的现有代码,该Java-9使用VM参数 解析HTTP/2客户端孵化器模块现在以编译错误告终 未找到模块:jdk。恒温箱httpclient Java版本详细信息:-

  • 问题内容: 我需要制作一个套接字模块的副本才能使用它,并且还要对猴子的另一个套接字模块进行修补并以不同的方式使用它。 这可能吗? 我的意思是真正地复制一个模块,即在 运行时 获得与复制,将功能更改为并将其安装为扩展程序相同的结果。 问题答案: 您总是可以做一些技巧,例如导入模块,然后将其从sys.modules中删除或尝试复制模块。但是,Python已经在其标准库中提供了所需的内容。 Python

  • 完整的错误消息:JDK丢失,并且是运行某些NetBeans模块所必需的。请使用--jdkhome命令行选项指定JDK安装,或查看http://wiki.NetBeans.org/faqrunningonjre以获取更多信息。 一些细节:我刚刚第一次在Linux mint上安装Netbeans。当我启动它时,当它打开模块时,会出现这个错误消息。但我确实安装了jdk。 $Java-版本 $javac-

  • 我正在对一些代码进行基准测试,但我无法使它像使用那样快速运行,即使在使用完全相同的算法时也是如此。因此,我将源代码复制到自己的包中,并尝试了以下操作: 当我运行这个(在MacOS上运行jdk 1.8.0_144-B01)时,它会输出: 当我在未注释导入行的情况下运行它时: 使用JDK版本的BigInteger比我的版本快三倍,即使它使用的代码完全相同。 我已经用javap检查了字节码,并比较了使用

  • 问题内容: 许多第三方Python模块都有一个属性,该属性保存该模块的版本信息(通常类似或),但有些则不然。 此类模块的特定示例是libxslt和libxml2。 我需要检查这些模块在运行时是否使用了正确的版本。有没有办法做到这一点? 潜在的解决方案是在运行时读取源代码,对其进行哈希处理,然后将其与已知版本的哈希进行比较,但这很讨厌。 有更好的解决方案吗? 问题答案: 我会远离哈希。正在使用的li

  • 我是编程新手,开始了mooc.fi课程(https://www.mooc.fi/en/installation/netbeans)我运行的是Windows10。我下载了TMC beans 1.4.0和Eclipse Temurin JDK以及Hotspot 11.0.12+7(x64)。 我试过: 卸载并重新下载JDK和TMC bean。 更改tmcbeans.conf文件,将该文件更改为:#jd