java - Java/Kotlin - 区分不同模块的相同限定名
问题描述
我有一个案例,我有两个包含相同包和类名的模块......
模块一
io.foo.Bar
模块二
io.foo.Bar
无论哪种情况,如果我打电话,Bar.class.getQualifiedName()
我都会收到相同的字符串。
有没有办法将它们完全区分开来?
解决方案
我相信模块一和模块二可以在类路径中以不同的名称在单独的 jar 中使用,例如 module-one.jar 或 module-two.jar。现在您可以使用反射来准确命名 jar,如下所示:
Class clz = Bar.class;
URL location = clz.getProtectionDomain().getCodeSource().getLocation();
System.out.println(location);
上面的代码将给出如下输出:
file:<jar location>/<jarname>.jar
这个答案是受这个问题启发的,有关更多信息,请仔细阅读该问题。
推荐阅读
- java - 将 Java 版本从 1.8 更改为 13 会导致问题
- python - Flask-Caching FileSystemCache 方法在超时时不会删除缓存项
- javascript - 当 Redux 状态改变时 React 不会重新渲染
- c# - Xamarin BLE 插件:ListView 不显示扫描设备的信息
- javascript - Ajax 调用后提交按钮不起作用
- html - 无法在此下拉菜单上应用过渡
- java - Gradle:如何为所有子项目配置插件扩展(例如 checkstyle {...})?
- flask - Flask - 模态表单 - 如何在模态上显示字段错误?
- python - 用硒保存图像?
- javascript - 为什么我的 gatsby 应用程序显示 Unknown argument 'frontmatter' 错误?