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

Java9模块和JUnit4

申屠浩歌
2023-03-14

食氧;视窗7;JDK 9决赛从9日开始,21日结束;JUnit4.12和现有的应用程序。作为起点,可以编译、执行应用程序,并且所有JUnit测试都显示为绿色。现在我们使用eclipse生成文件模块信息。JAVA结果是:

module ch.commcity.topsort {
   exports ch.commcity.topsort;

   requires junit;
}

但有一个错误:junit无法解析为模块。问题是:如何告诉文件junit没有定义任何模块,应该在兼容模式下运行?

共有3个答案

柳培
2023-03-14

如何告诉文件jUnit没有定义任何模块,它应该在兼容模式下运行?

因为在模块信息中生成的模块jUnit将是一个从其工件转换的自动模块。您需要确保JUnitjUnit: jUnit: 4.12的jar在项目的模块路径上可用,并且模块将自行解析。

为了确保上述内容,您可以检查在IDE中配置的项目/模块的依赖关系,以包括junit:4.12:jar

贡和裕
2023-03-14

首先,请更新您对EclipseOxygen的Java9支持,或者使用最新的Eclipse4.7候选版本。1a(将于2017年10月11日发布)。

要将库或容器添加到Eclipse中Java9项目的模块路径中,请打开项目的Java构建路径对话框。在库选项卡上,选择节点模块路径并将库添加到其中。如果Classpath节点已经存在该库,请确保首先从该节点中删除该库。

正如其他人提到的,在您的例子中,JUnit库将被视为自动模块。

公良玺
2023-03-14

如何告诉文件jUnit没有定义任何模块,它应该在兼容模式下运行?

你的问题似乎基于几个误解:

  • 您无法分辨模块信息。javaJUnit是否定义模块。如果一个模块说它需要另一个模块,那么编译器希望该模块存在——这是不可能的

我建议对模块系统的杰出状态进行彻底的阅读,然后问问自己你到底想完成什么。您真的想创建一个依赖于JUnit的模块吗?或者这只是偶然的,因为您使用它的应用编程接口进行测试。如果是后者,您不应该依赖它——相反,您的IDE/构建工具需要弄清楚如何编译和运行您的测试。

模块系统不会将依赖项归类为编译或测试-如果一个模块需要另一个模块,它必须始终存在。这意味着需要jUnit的模块将强制JUnit的存在。除非模块提供与测试相关的功能,否则这肯定是错误的。

换句话说,需要junit类似于使用编译范围将junit添加到项目的POM中。

 类似资料:
  • 主要内容:模块系统特征,创建模块Java 9是一种称为模块的新型编程组件。模块是一个自我描述的代码和数据集合,并有一个名称来标识它。 模块系统特征 使用模块组件,Java 9中增加了以下增强功能 - 引入了一个新的可选阶段,即链接时间。这个阶段介于编译时间和运行时间之间。 在此阶段,可以组合和优化一组模块,使用jlink工具制作自定义运行时映像。 javac,jlink和java有额外的选项来指定模块路径,它们进一步定位模块的定

  • 我试图使用java 9和gradle的Spring启动。我无法运行我的简单代码,我得到下面提到的错误:- 我的依赖文件和module-info.java文件非常简单。 有人能帮忙吗?? 谢谢 阿马尔

  • 非常简单的用例,我使用的是EclipseOxygen4.7。3a,包括来自Java9的支持。我有两个项目是Java 9项目: 我想在中使用类,因此我尝试将第二个模块导入第一个项目。 模块信息。java项目1: 模块信息。java项目2: Eclipse给了我错误: 项目二不能解析为模块 我是否必须将所有Java项目集中在一个“主项目”下,以便让Eclipse知道所有这些模块在其中都是可用的?还是我

  • 我想在java模块中使用CDI功能。我希望我的代码保持泛型,不依赖于特定的实现。 我使用Java11和Maven3.6.0。 为了简单起见,我的目标被简化为在java文件中导入包。当我在没有module(没有)的情况下这样做时,每件事都能正常工作。 我的理解是,CDI库应该采用一个受jar文件名称启发的自动模块名称。当我使用指令运行maven时,我在类路径中看到。我相信,如果我错了,请更正,这应该

  • 我得到3个不同的错误。 无法确定模块名称... 未命名模块读取包... 模块org.reactivestreams读取包从两个... 这些错误到底是什么? 建筑格拉德尔 错误消息: 编译Java 错误:无法确定/Users/srihariprasad/的模块名称。gradle/caches/modules-2/files-2.1/io。github。resilience4j/resilience4

  • 我试图了解JPMS是如何工作的。 从这里开始 类路径还没有完全消失。类路径上的所有JAR(模块化或非模块化)和类都将包含在未命名的模块中。与自动模块类似,它导出所有包并读取所有其他模块。但很明显,它没有名字。因此,它不能被指定的应用程序模块所要求和读取。未命名的模块可以依次访问所有其他模块。 请注意。。。在类路径上,将包含在未命名模块中。模块为单数。 从这里开始 为了兼容性,类路径上的所有代码都打