我正在尝试升级我们的Spring版本,并使用Spring IO Platform BOM来做到这一点,但是我们的一些类已经丢失(移至其他构件中),或者不再依赖于我要引入的某些东西。尝试找出它们最初属于哪个软件包(一个示例是CSVStrategy)。其中一些依赖项(例如WhitespaceTokenizer)具有可以提供的十几个工件名称,为了找到正确的升级路径,我需要弄清楚它的来源。

最佳答案

一种可能的方法是获取资源(类)位置。如果该类来自jar文件,则至少会获得jar名称。由此您应该能够识别Maven工件。

someClass.getProtectionDomain().getCodeSource().getLocation().toURI();

或者使用ResourceLoader和记录器,您可以在classpath / servlet-path上打印所有类的列表。
@Autowired
ResourceLoader resourceLoader;

public void printResourceLocations() {
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(resourceLoader);
    Resource[] resources = resolver.getResources("classpath*:com/**/*.class"));
    for (Resource resource : resources) {
        log.info(resource.getURI());
        // Not sure if that works, probably getFile() is ok?
    }
}

09-11 20:48