如何在IDEA中使用类路径而不是模块路径运行Java 9应用程序?

时间:2017-07-28 10:22:45

标签: java intellij-idea java-9 jigsaw

当我在IDEA中运行主类时,它会将模块及其依赖项放在模块路径上。是否可以将其更改为类路径?

2 个答案:

答案 0 :(得分:3)

如果没有定义module-info,IDEA会在类路径上设置应用程序和依赖项。由于你有一个模块信息,它是一个显式模块,所以它必须在模块路径上。通常,您现在可以将自己的家属作为自动模块来处理。

无论如何,你的依赖关系至少有充分的理由进入类路径。我们在这里讨论Why Java 9 does not simply turn all JARs on the class path into automatic modules?

例如,mymodule依赖于自动模块,但是它需要一个不能成为自动模块的jar。在命令行上它会这样:

java -cp legacy.jar -p“mymodule.jar; automodule.jar;” -m mymodule / com.example.mymodule.Application

IMO intellij目前不支持这一点。作为至少在类路径上运行整个应用程序的解决方法,您可以重命名模型信息以禁用/暂时不是拼图模块。

答案 1 :(得分:2)

要回答这个问题,启发式IDEA用于运行具有模块路径的应用程序目前稍微关闭(IDEA 2018.01)。显然需要考虑更多因素。

有关详细信息,请参阅IDEA-187390IDEA-193714

因此,如果您当前的项目没有module-info文件,并且您仍然以模块路径结束,那么我知道当前的情况是您正在从依赖项运行主类。只需在项目中构建一个小包装器并从那里运行主类,它将返回到类路径。