java - JBoss Modules:如何从模块运行服务?
问题描述
我正在尝试从模块运行服务,但出现下一个错误:
Exception in thread "main" java.util.ServiceConfigurationError: com.example.prototype.api.Service: Provider com.example.prototype.foo.FooService not a subtype
at java.util.ServiceLoader.fail(ServiceLoader.java:239)
at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at java.lang.Iterable.forEach(Iterable.java:74)
at com.example.prototype.api.Main.main(Main.java:19)
方法和架构描述:
我想要一个带有模块的应用程序,其中一个模块描述接口,另一个模块实现它。这个想法是接口模块不应该知道任何关于具体实现的事情。
代码库位于github 上。
备注:
api-module
有Service
接口。此外,它具有通过调用服务实现Main
进行实例化的类。有接口的实现。 foo-module
foo-module
Service
API模块主类:
public class Main {
public static void main(String[] args) throws Throwable {
File root = new File("prototype");
ModuleLoader loader = new ModuleLoader(new LocalModuleFinder(new File[]{root}));
Module module = loader.loadModule("com.example.prototype.foo");
ServiceLoader<Service> services = module.loadService(Service.class);
System.out.println("Foo Service loaded");
services.forEach(Service::sayWhatsup);
System.out.println("Done!");
}
}
富模块module.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.8" name="com.example.prototype.foo" version="1.0">
<main-class name="com.example.prototype.foo.Main"/>
<resources>
<artifact name="com.example.prototype:foo-module:1.0"/>
</resources>
<dependencies>
<module name="com.example.prototype.api"/>
</dependencies>
<provides>
<service name="com.example.prototype.api.Service">
<with-class name="com.example.prototype.foo.FooService"/>
</service>
</provides>
</module>
据我了解Service.class
并FooService
有不同的类加载器,那是因为出现了类兼容性问题。
请帮助解决这个问题。提前致谢!
解决方案
推荐阅读
- java - 无法通过 Spring Security 登录到 LDAP
- django - 使用 django 应用程序作为其他 django 应用程序的中央身份验证系统
- rest - 如何处理 REST API 中的异常
- reactjs - 选择所需输入时,在自动完成中出现“对象作为 React 子项无效”的错误
- flutter - 动画
Null Safety 中的 TweenSequence 抛出错误 - javascript - 如何在函数外部的 if 语句中使用函数中的更新局部变量?JS
- python - 使用数据帧的多行来设置 scipy.optimize 的目标函数 - 口袋妖怪数据
- excel - 在两个工作簿之间复制数据的运行时错误“438”
- json - 如何循环 Json 数据?
- java - 如何在第二次活动中打印吐司?