【发布时间】:2018-09-07 08:15:06
【问题描述】:
我尝试关注这个question,但它对我不起作用。 我想编译 1 个模块(不需要任何其他模块或 jar)以及其他使用该模块并将位于未命名模块中的类。
javac -cp lib\* --module-path modules --add-modules simpleModule -d out @classes.txt
运行此命令后,我得到“包 org.... 不存在”。但是这个包的jar在lib目录中
lib - 包含我的 library-jars 的目录
modules - 此文件夹包含带有 module-info.java 的模块“simpleModule”
@classes.txt - 所有要编译的类列表(包括模块化和非模块化)。操作系统 - Windows
当我从 simpleModule 中删除 module-info.java 时,一切都编译得很好。
【问题讨论】:
-
另一个问题讨论了引用
lib/*,但我实际上想知道*是否曾经扩展?javac可能不会这样做,它必须在命令执行之前进行扩展。我无法告诉你任何关于 Windows 上的*扩展的信息…… -
@StephanHerrmann
lib/*- 这对我来说适用于 Windows。它将lib目录下的所有 jars 带到类路径。正如我所提到的,当我删除module-info.java和--add-modules simpleModule时,它会将simpleModule下的类视为非模块化并且编译没有问题 -
我发现“在这种编译模式下,可以将任意类和 JAR 文件放在类路径上,但不建议这样做,因为这相当于将这些类和 JAR 文件视为模块的一部分正在编译。”这里openjdk.java.net/jeps/261#Compile-time有人可以解释一下吗?
标签: java classpath java-9 java-platform-module-system module-path