当我在 IDEA 中运行一个主类时,它会将模块及其依赖项放在模块路径上。是否可以将其更改为类路径?
2 回答
如果您没有定义模块信息,IDEA 会在类路径上设置应用程序和您的依赖项。由于您有一个模块信息,它是一个显式模块,因此它必须位于模块路径上。通常,您现在会将您的依赖项作为自动模块处理。
但是,您的依赖项至少有充分的理由在类路径上。我们在这里讨论了为什么 Java 9 不简单地将类路径上的所有 JAR 转换为自动模块?
例如, mymodule 依赖于一个自动模块,但是它需要一个还不能成为自动模块的 jar。在命令行上它会是这样的:
java -cp legacy.jar -p "mymodule.jar;automodule.jar;" -m mymodule/com.example.mymodule.Application
IMO intellij 目前不支持该功能。作为至少在类路径上运行整个应用程序的一种解决方法,您可以重命名模型信息以暂时禁用/不成为拼图模块。
为了回答这个问题,启发式 IDEA 用于运行具有模块路径的应用程序目前略微偏离(IDEA 2018.01)。它显然比它应该考虑的更多。
有关详细信息,请参阅IDEA-187390和IDEA-193714。
因此,如果您当前的项目没有模块信息文件并且您仍然以模块路径结束,那么我知道的当前情况是您正在从依赖项运行主类。只需在您的项目中构建一个小型包装器并从那里运行主类,即可将您带回类路径。