- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 JPMS 功能的多模块 Maven 项目。消费者模块未加载提供者模块中存在的实现。
这是 Maven 项目结构:
ServiceLoaderExample
├── consumer
├── distribution
├── provider
├── service
界面TestService
在“服务”模块中定义。实现是TestServiceImpl
这是在“provider”模块中定义的。 “consumer”模块中的 main() 方法使用 ServiceLoader API 来加载 TestService
的实现。 。在“分发”模块中,我使用 maven-assesmbly-plugin 创建包含所有依赖项的 JAR。
因此,以下是相应的模块信息文件:
1 - “服务”模块(定义 org.example.service.TestService
):
module org.example.service {
exports org.example.service;
}
2 - “provider”模块(定义 org.example.provider.TestServiceImpl
):
module org.example.provider {
requires org.example.service;
provides org.example.service.TestService with org.example.provider.TestServiceImpl;
}
3 - “消费者”模块(使用 ServiceLoader API 获取 TestService
的实现):
module org.example.consumer {
requires org.example.service;
uses org.example.service.TestService;
}
我正在使用 maven-assesmbly-plugin,因此在构建 JAR 时,事情可能会搞砸。作为引用,这里是插件定义:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>org.example.consumer.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
我正在使用 Java 13 和 Maven 3.6.3,并且我正在使用命令 java -jar distribution-1.0-SNAPSHOT-jar-with-dependencies.jar
运行该程序。 。我做错了什么?
最佳答案
我无法使用 uber-jar 让它工作,但是,使用 JLink 时一切都可以工作。因此决定只使用 JLink。
关于java - 为什么 ServiceLoader 不会从另一个模块加载任何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59369028/
我的 ServiceLoader 不想加载我的新服务。我认为我已正确设置所有内容。 核心.主要 public class Main { public static void main(String
是否可以在注释处理器的 init(ProcessingEnvironment) 方法中使用 ServiceLoader? interface Service {} class Annotation
这是一个已知问题吗?我找不到任何搜索结果。 当迭代已经在进行时迭代 ServiceLoader 时,第一次迭代将中止。例如,假设至少有两个 Foo 的实现,以下代码将失败并出现 AssertionEr
我想了解Java ServiceLoader的概念、工作机制和具体用例,但找到官方documentation过于抽象和困惑。 首先,文档概述了服务和服务提供商。服务是一组封装在 jar 存档(API
我最近发现关于服务加载器是否会在启动后定位添加到模块路径的提供程序的相互矛盾的文档。 ServiceLoader::reload : public void reload() Clear this
在问这个之前我真的做了很多研究,好像我错过了什么。我尝试实现一个 ServiceLoader,因此制作了一个示例类: 代码很简单: testInterface.java package com.tes
使用 ServiceLoader 的最佳实践是什么?在具有多个类加载器的环境中?该文档建议在初始化时创建并保存单个服务实例: private static ServiceLoader codecSet
我遇到了 the documentation of ServiceLoader并且不清楚它适用于哪些用例。 什么时候使用ServiceLoader? 最佳答案 当您希望您的程序具有“插件”功能时,您可
JPMS ServiceLoader 无法正常工作。 我正在尝试提供一个桌面程序作为可执行jar,带有默认服务,可以由个人用户重载。用户提供他们自己的服务类,并在命令行上提供他们的名字作为参数。 服务
我有一个使用 JPMS 功能的多模块 Maven 项目。消费者模块未加载提供者模块中存在的实现。 这是 Maven 项目结构: ServiceLoaderExample ├── consumer ├─
我正在尝试弄清楚Java的ServiceLoader。我设置了一个非常基本的测试实现: public class BaseThingy { public BaseThingy(){ Itera
我遇到问题,但不知道如何解决 假设我有两个服务提供商接口(interface) (SPI) public interface View{ display(); } public interfa
我希望能够将枚举类型指示为接口(interface)实现,然后通过 ServiceLoader API 将所有枚举加载为接口(interface)的单独实例/实现。此用例的一个示例是允许 API 的下
我想知道是否可以将 ServiceLoader 与 EJB 以及来自 Java EE 6 的注入(inject)结合起来。 假设我有一个接口(interface) ServiceI,它可以由两个 EJ
我正在尝试将一个基本的基于 SPI 的处理程序注册表放在一起,我从 HandlerRegistry 中查找它。当我使用 ServiceLoader.load(Handler.class) 初始化提供程
我刚读到有关 Java 9 模块系统的信息,我想问一下 ServiceLoader .当应用程序已经启动时,有什么方法可以添加服务实现吗?删除一些服务实现怎么样? 用例:我将有一些计算某些东西的应用程
class ServiceLoader implements Iterable { // ... } interface Foo { // ... } class FooReposit
我试图找出是否有 ServiceLoader 类的 Spring 类似物,它是标准 SDK API 的一部分。如果有这样的类怎么用? 请指教! 最佳答案 假设 SpringFactoriesLoade
jjs.exe 运行的脚本是否应该能够像任何 Java 程序一样使用 ServiceLoader 定位服务? 我已将案例简化为以下脚本: function dump (stream) { (n
我的工作区中有四个 Eclipse 插件项目(创建一个新的 Java 项目,右键单击,配置,转换为插件项目)。第一个(my.runtime)包含一个接口(interface)(MyFactoryInt
我是一名优秀的程序员,十分优秀!