Java模块路径参数混淆

Java模块路径参数混淆,java,java-module,Java,Java Module,这个问题是关于JDK14“java”命令的确切语法 各国: 而java--Ubuntu上的帮助说明: -p <module path> --module-path <module path>... A : separated list of directories, each directory is a directory of modules. -p --模块路径。。。 A:单独的目录列表,每个目录 是一个模块目录。 我用jar文件试过,冒号分隔有

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

各国:

而java--Ubuntu上的帮助说明:

-p <module path>
--module-path <module path>...
    A : separated list of directories, each directory
    is a directory of modules.
-p
--模块路径。。。
A:单独的目录列表,每个目录
是一个模块目录。
我用jar文件试过,冒号分隔有效,分号无效。我使用的是jar文件,而不是目录。jar文件是否被视为“模块目录”?或者只是一些未记录的特性,可以使用jar文件而不是目录?是否与File.pathSeparatorChar有关系?

正如您所观察到的那样--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

如上文所述,是。pathSeparatorChar是操作系统上路径的拆分器,用作类路径和模块路径中项目的分隔符。窗口“;”但通常情况下,“:”在别处。

Yes
File.pathSeparatorChar
是操作系统上拆分路径的约定,用作类路径和模块路径中项目的分隔符,是“;”在Windows上,但通常在别处使用“:”。因此Oracle文档是错误的?Windows使用分号分隔符,因此不会与驱动器号冒号混淆,因此错误取决于您在哪个操作系统上阅读文档!但对于你的第一点,我不认为jar是作为一个模块的目录来使用的。您模块路径中的其他目录是否足以解析为模块,而您列出的任何JAR都被忽略了?@DuncG:模块路径上只有JAR。链接的Oracle文档不是特定于操作系统的。是的,看起来文档需要修改
java  --module-path ..\jars\somemodule.jar;other.jar;..\jars\non-module.jar main.ClassName