我创建了一个简单的 Java9 服务示例,其中包含一个服务接口、两个服务实现以及一个使用 ServiceLoader 的驱动程序。我能够使用 module-path 成功执行该示例,但是当我尝试使用 java -cp (classpath) 执行相同的示例时,我没有得到任何输出,甚至没有任何错误。
目录结构
out
├── driver
│ ├── com
│ │ └── company
│ │ └── driver
│ │ └── driver.class
│ └── module-info.class
├── firstServiceImpl
│ ├── com
│ │ └── company
│ │ └── first
│ │ └── serviceImpl
│ │ └── FunImpl1.class
│ └── module-info.class
├── secondServiceImpl
│ ├── com
│ │ └── company
│ │ └── second
│ │ └── serviceImpl
│ │ └── FunImpl2.class
│ └── module-info.class
└── serviceInterface
├── com
│ └── company
│ └── service
│ └── Fun.class
└── module-info.class
编译命令
javac -d out --module-source-path src src/driver/driver.java src/firstServiceImpl/FunImpl1.java src/secondServiceImpl/FunImpl2.java src/serviceInterface/Fun.java
上面的命令使用module-source-path编译代码。
运行命令
java -cp out/driver:out/serviceInterface/:out/firstServiceImpl/ com.sunil.driver.driver
上面的命令使用classpath运行代码。
使用module-source-path编译并使用classpath运行代码后。我没有收到任何错误或输出。请帮助我理解为什么使用classpath运行时没有输出。
沧海一幻觉
相关分类