我通过阅读这本书学习Java 9模块
Modular Programming in Java 9
“。在第7章“服务简介”第201页中,我按照书中的步骤使用服务创建了一个简单的项目。我将发布下面的代码,或者您可以访问项目
github
.
服务
课程名称:packt.sortutil
类名:packt.util.sortutil
public interface SortUtil {
List sortList(List list);
}
2。提供者
类名:packt.util.impl.BubbleSort.BubbleSortUtilimpl:
代码:
package packt.util.impl.bubblesort;
public class BubbleSortUtilImpl implements SortUtil
...
模块-info.java
module packt.sort.bubblesort {
requires packt.sortutil;
provides packt.util.SortUtil with packt.util.impl.bubblesort.BubbleSortUtilImpl;
}
还有
packt.util.impl.javasort.JavaSortUtilImpl
唯一不同的是不同的实现。
消费者
模块-info.java:
module packt.addressbook {
requires packt.sortutil;
uses packt.util.SortUtil;
}
代码:
Iterable sortUtils = ServiceLoader.load(SortUtil.class);
for (SortUtil sortUtil : sortUtils){
System.out.println("Found an instance of SortUtil");
sortUtil.sortList(contacts);
}
当我管理消费者时
应该是
:
请注意突出显示的区域,其中有两个实现。而且,名字是按姓氏排序的。
但是
对于我的节目,
它是:
2æ 03, 2019 12:12:55 ä¸å packt.addressbook.Main main
INFO: Address book viewer application: Started
2æ 03, 2019 12:12:56 ä¸å packt.addressbook.Main main
INFO: Address book viewer application: Completed
[Edsger Dijkstra, Raid Black]
注意这里
没有“找到sortutil的实例”
名字也没有排序。所以看起来好像没有在服务中注册的实现。
哪里出错了?谢谢。