首页 > 解决方案 > Java 模块路径参数混淆

问题描述

这个问题是关于 JDK 14“java”命令的确切语法。

Oracle 文档指出:

--module-path modulepath... or -p modulepath
    A semicolon (;) separated list of directories in which each directory is a directory of modules. 

而 Ubuntu 上的 java --help 说:

-p <module path>
--module-path <module path>...
    A : separated list of directories, each directory
    is a directory of modules.

我使用 jar 文件进行了尝试,并且用冒号分隔有效,但使用分号无效。我使用了 jar 文件,而不是目录。jar 文件是否被视为“模块目录”?或者它只是一些未记录的功能,可以使用 jar 文件而不是目录?与 File.pathSeparatorChar 有关系吗?

标签: javajava-module

解决方案


正如您所观察到--module-path的,可能包含对目录或 jar 的引用,我已经检查了我的一个模块 jar,它在这种格式下运行良好:

java --module-path ..\jars\somemodule.jar;other.jar --class-path ..\jars\non-module.jar main.ClassName

它也运行良好:

java  --class-path ..\jars\somemodule.jar;other.jar;..\jars\non-module.jar main.ClassName

但不是这里的非模块:

java  --module-path ..\jars\somemodule.jar;other.jar;..\jars\non-module.jar main.ClassName

是的,如上所述,File.pathSeparatorChar是操作系统上 PATH 的分隔符,用作类路径和模块路径中项目的分隔符。窗户';' 但通常在其他地方使用“:”。


推荐阅读