当我在IDEA中运行主类时,它会将模块及其依赖项放在模块路径上。是否可以将其更改为类路径?
答案 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-187390和IDEA-193714。
因此,如果您当前的项目没有module-info文件,并且您仍然以模块路径结束,那么我知道当前的情况是您正在从依赖项运行主类。只需在项目中构建一个小包装器并从那里运行主类,它将返回到类路径。