繁体   English   中英

将 java 字符串类路径转换为通配符,其中来自同一目录的多个 jar 出现在类路径中?

[英]Convert a java string classpath into a wildcard where more than `N` jars from the same directory show up in the classpath?

我从代理启动器启动 java。 类路径变得如此之大,我需要使用 manifest.mf 文件,否则 Windows 将耗尽 cmd 行空间(bash 也有一个限制,但它要高得多,所以我们在那里看不到它)。

我宁愿只在类路径上使用通配符。

我怎么能写一个Java方法,可以转换的字符串类路径(例如: /my/dir/myjar.jar /my/dir/myjar2.jar ... )为一个通配符有超过N从同一目录显示罐子在类路径中?

这是我正在解决的问题:

public static String convertClasspathToWildcard(String cp) {
    Set<String> parentCountMap = new HashSet<>();
    for (String nextJar : cp.split(SystemUtils.IS_OS_WINDOWS && cp.contains(";") ? ";" : ":")) {
      String substring = nextJar.substring(0, nextJar.lastIndexOf(File.separator));
      parentCountMap.add(substring);
    }
    StringBuilder newCp = new StringBuilder();
    for (String parent : parentCountMap) {
      if (newCp.length() > 0) {
        newCp.append(SystemUtils.IS_OS_WINDOWS ? ";" : ":");
      }
      newCp.append(parent + File.separator + "*");
    }
    return newCp.toString();
  }

不太行,但这是我想要的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM