---------------------------------------------
package org.zpf.service;
public interface Services {
    void test();
}
module org.zpf.service.Services {
    exports org.zpf.service;
}
---------------------------------------------
package org.zpf.impl;
import org.zpf.service.Services;

public class Impl implements Services {
@Override
public void test() {
    System.out.println("Impl-1");
 }
}

module org.zpf.impl.Impl {
    requires org.zpf.service.Services;
    provides org.zpf.service.Services with org.zpf.impl.Impl;
}
----------------------------------------------
public class Demo {
   public static void main(String[] args) {
      ServiceLoader.load(Services.class).forEach(Services::test);
   }
}

module org.zpf.demo.Demo {
    requires org.zpf.service.Services;
    uses org.zpf.service.Services;
}

我正在使用IntelliJ IDEA运行此代码,但看起来子模块未运行。以下是程序的输出:
/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA 2018.3.app/Contents/lib/idea_rt.jar=61434:/Applications/IntelliJ IDEA 2018.3.app/Contents/bin" -Dfile.encoding=UTF-8 -p /Users/tubetrue01/IDEA/Test/Demo/target/classes:/Users/tubetrue01/IDEA/Test/Services/target/classes -m org.zpf.demo.Demo/org.zpf.demo.Demo

Process finished with exit code 0

最佳答案

您需要做的就是确保模块

module org.zpf.impl  // fixing the name from that of question

存在于模块路径上。在命令行中执行您共享的命令,并添加impl模块的路径,即可按预期工作。
.../jdk-11.jdk/Contents/Home/bin/java -p .../Desktop/modular/out/production/demo:.../Desktop/modular/out/production/modular:.../Desktop/modular/out/production/impl -m org.zpf.demo.Demo/org.zpf.demo.Demo

打印exped输出



命令行中(仅出于可读性的目的而设置)
-p /Users/tubetrue01/IDEA/Test/Demo/target/classes:
   /Users/tubetrue01/IDEA/Test/Services/target/classes

应该修改为类似
-p /Users/tubetrue01/IDEA/Test/Demo/target/classes:
   /Users/tubetrue01/IDEA/Test/Services/target/classes:
   /Users/tubetrue01/IDEA/Test/Impl/target/classes

使用 IntelliJ IDEA ,您可以通过以下步骤进行操作:
  • 项目结构>模块
  • 选择Demo模块>导航到依赖项
  • 添加依赖项[模态的左下角( + )]>模块依赖项
  • 选择Impl模块并应用。
  • 立即运行Demo类。
  • 10-07 19:32
    查看更多