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

Java9无类定义例外

皇甫伟彦
2023-03-14

所以我想试试http客户端

package com.company;

import jdk.incubator.http.HttpClient;

public class Main {

public static void main(String[] args) {
    HttpClient client =  HttpClient.newHttpClient();

  }
}

我的模块信息是这样的

module com.company {
    requires jdk.incubator.httpclient;
}

但我得到java.lang.NoClassDefFoundError: jdk/孵化器/超文本传输协议/HttpClient

我真的不明白为什么。我的java版本是“build 9-ea 169”,我使用的是IntelliJ idea的最新版本(2017.1.3)。我研究了这个答案,看起来我必须将需求添加到一个文件中,但由于某些原因,它不起作用。

共有3个答案

史弘致
2023-03-14

我遇到了同样的问题

java.lang.NoClassDefFoundError: jdk/孵化器/超文本传输协议/HttpClient

使用java-9-ea173和IntelliJ。我按照尤金和尼古拉的建议添加了jdk。恒温箱httpclient通过——添加模块jdk显式地添加到模块路径。恒温箱运行/调试配置中的httpclient(在macOS:菜单栏上-

从那以后一切都很顺利。当然,您必须将依赖项添加到模块信息中。java如前所述:

module network {
    requires jdk.incubator.httpclient;
}

更新:

最新IntelliJ IDEA 2017.2 EAP 172.2953。9,我不需要将--添加模块添加到VM选项中。它只是开箱即用。

燕翔飞
2023-03-14

不是你就是IntelliJ一定搞错了。您使用的是孵化器模块,文档中说明:

孵化器模块是标准JDK构建生成的JDK运行时映像的一部分。但是,对于类路径上的应用程序,默认情况下不会解析孵化器模块。类路径上的应用程序必须使用--addmodules命令行选项请求解析孵化器模块。作为模块开发的应用程序可以直接指定对孵化器模块的依赖关系。

我刚刚确认了java-9-ea 169上的行为,即我可以编译和启动这样一个模块(从命令行)而不需要额外的标志。

没有得到编译错误这一事实似乎表明IntelliJ在编译中正确地包含了模块声明。您得到了一个运行时错误,并且这个答案有帮助,这一事实表明JVM没有看到您作为模块启动的代码。

伏默
2023-03-14

如果我使用--addmodules jdk,我就可以很好地使用它。恒温箱httpclient作为启动参数

HttpClient client = HttpClient.newHttpClient();
client.executor().execute(() -> System.out.println("Here")); // prints Here

如果你说你的模块需要它,并不意味着它将被包含;在默认情况下,它不包括。

 类似资料:
  • 主要内容:Java SE 8:Optional类基础,Java SE 8:Optional基本示例,Java SE 9:Optional类改进,Java SE 8样式:Optional方法在这篇文章中,我们将讨论“Java SE 8的类如何解决空检查问题?”以及“Java SE 9的类改进”。 作为Java开发人员,我们知道为了避免错误而对每个对象进行空检查时需要做不少的工作。 Java SE 8:Optional类基础 Oracle公司已经引入了类作为包的一部分。 它是一个容器对象,它可能包含

  • 我对Java有很好的理解,但我正在努力学习c来制作游戏,因为我认为c是一种更好的语言。但是我对c有一些问题。 是一个带有字符串构造函数的类,只是在这个类中声明它会导致错误。如果我删除的构造函数,我不会得到错误。 错误:render.cpp:3:16:错误:没有匹配的函数调用着色器::着色器()

  • 我使用的是JBoss7.1;接缝2.3;JDK 1.7;和RichFaces 4.5.14。 当我第一次开始部署Seam empty web projet时,我得到了一个错误: 我的Java构建路径: 多谢帮忙。

  • 主要内容:1. Java 9 REPL(JShell),2. 用于不可变列表,集合,映射和Map.Entry的工厂方法,3. 接口的私有方法,4. Java 9模块系统,5. Process API改进,6. Try-With-Resources改进,7. CompletableFuture API改进,8. 反应流,9. 菱形运算符匿名内部类,10 Optional类改进,11. Stream API改进,12. 增强了@Deprecated注释,13. HTTP2客户端,14. 多分辨率图像

  • 班Java 9中不推荐使用newInstance: 可替换为 问题是getDeclaredConstructor返回任何构造函数,而不考虑访问级别。 如果我想替换代码中的所有引用(在不同的包/访问级别上),我应该使用getConstructor来获取公共构造函数吗? 与指定参数匹配的公共构造函数的构造函数对象类型 或者我不能批量替换所有发生的事件,因为它需要按大小写替换(如果存在公共构造函数和/或

  • 本文向大家介绍C#定义的MP3播放类实例,包括了C#定义的MP3播放类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#定义的MP3播放类。分享给大家供大家参考。具体分析如下: 这里使用C#定义一个MP3播放类,将Mp3文件作为资源文件包含到项目中,就可以播放mp3了 调用方法: 希望本文所述对大家的C#程序设计有所帮助。