Java 中的 modulepath 环境变量类似于 CLASSPATH
modulepath environment variable in Java similar to CLASSPATH
在以前的 Java 版本中,如果您在 windows 中有一个用户定义的包 org.mypackage,其目录结构为
D:\myprogram\
|
---> org\
|
---> mypackage\
|
---> HelloWorld.class
---> SupportClass.class
---> UtilClass.class
您可以使用 CLASSPATH 环境变量让 JVM 识别包。
例如:
set CLASSPATH=D:\myprogram
set MODULEPATH
命令是否让 JVM 知道最新版本 Java 中用户定义模块的位置?
如果是这样,为什么 classpath 命令仍然存在,它现在有什么用?
不,jdk 不读取任何 MODULEPATH 环境变量或类似变量。
MODULEPATH 仅作为 command-line 参数 --module-path
存在,而不作为环境变量存在。
见http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-September/009345.html
Unlike CLASSPATH, there is no equivalent MODULEPATH to get the option off of the command line.
另请参阅链接问题 ,了解有关这两个路径之间差异的更多详细信息。
如果您将一个普通的 jar 放在模块路径上,它就会成为一个自动模块,导出它的包(并为自己保留这些包)。
虽然您可以将任何普通的 jar 文件放入 MODULEPATH,但有一个限制:如果 2 个 jar 文件包含相同的包,那么 java 将不允许它们同时出现在模块路径中。 这就是为什么Java还有类路径的原因,因为现有的几个jar文件仍然有重叠的包,不可能把它们都放在MODULEPATH上。他们必须先清理干净。
在遥远的未来,当所有库都迁移到模块(或清理)后,也许可以删除类路径。
在以前的 Java 版本中,如果您在 windows 中有一个用户定义的包 org.mypackage,其目录结构为
D:\myprogram\
|
---> org\
|
---> mypackage\
|
---> HelloWorld.class
---> SupportClass.class
---> UtilClass.class
您可以使用 CLASSPATH 环境变量让 JVM 识别包。
例如:
set CLASSPATH=D:\myprogram
set MODULEPATH
命令是否让 JVM 知道最新版本 Java 中用户定义模块的位置?
如果是这样,为什么 classpath 命令仍然存在,它现在有什么用?
不,jdk 不读取任何 MODULEPATH 环境变量或类似变量。
MODULEPATH 仅作为 command-line 参数 --module-path
存在,而不作为环境变量存在。
见http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-September/009345.html
Unlike CLASSPATH, there is no equivalent MODULEPATH to get the option off of the command line.
另请参阅链接问题
如果您将一个普通的 jar 放在模块路径上,它就会成为一个自动模块,导出它的包(并为自己保留这些包)。
虽然您可以将任何普通的 jar 文件放入 MODULEPATH,但有一个限制:如果 2 个 jar 文件包含相同的包,那么 java 将不允许它们同时出现在模块路径中。 这就是为什么Java还有类路径的原因,因为现有的几个jar文件仍然有重叠的包,不可能把它们都放在MODULEPATH上。他们必须先清理干净。
在遥远的未来,当所有库都迁移到模块(或清理)后,也许可以删除类路径。