java - 在类路径代码中有实现以在库中使用
问题描述
我正在尝试编写一个实用程序库(jar),
图书馆内
interface ConfigBuilder
{
public Configuration buildConfiguration()
}
class SomeLogic
{
private void someMethod()
{
ConfigBuilder builder = // GET IMPLEMETATION OBJECT FROM IMPLEMENTOR OF LIBRARY ??
Configuration c = builder.buildConfiguration();
method2(c)
//Some logic
}
}
我怎样才能做到这一点 ??我使用 Gradle 作为构建工具。作为库我们没有实现类。我们能做的最大的事情是——谁实现了这个库,创建一个有名字的类com.xyz.lib.implimentation.ConfigBuilderImpl
实现ConfigBuilder
接口
我尝试 的是
this.getClass.getClassLoader.loadClass("com.xyz.lib.implimentation.ConfigBuilderImpl")
然后我得到异常
java.lang.ClassNotFoundException: com.xyz.lib.implimentation.ConfigBuilderImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
解决方案
您可以使用 SPI,即服务提供者接口。
推荐阅读
- python - 将作为浮点值的多个列值(包括 MSB/LSB 中的零)转换为二进制(在 python 中)
- sql-server - 在 SSIS SQL 命令中是什么?意味着在集合变量中
- r - 在离线计算机上安装“png”R 包时遇到问题
- android - 无法获取 com.opentok.android:opentok-android-sdk 错误
- azure - Azure 搜索中的表单识别器
- asp.net - Asp.net 5 处理多数据库结构
- r - 官员似乎默认有第一张幻灯片
- highcharts - HighCharts Base64 无法解码以转换为 .png 或 .jpg 图像
- selenium - 元素不可交互
- google-cloud-functions - 存储中的连接问题触发 GCF