将java字符串类路径转换为通配符,在该通配符中,来自同一目录的多个'N`jar显示在类路径中?

将java字符串类路径转换为通配符,在该通配符中,来自同一目录的多个'N`jar显示在类路径中?,java,classpath,Java,Classpath,我从代理启动器启动java。类路径变得如此之大,我需要使用manifest.mf文件,否则Windows将耗尽cmd行空间(bash也有限制,但它要高得多,所以我们在那里看不到它) 我宁愿在类路径上使用通配符 我如何编写一个java方法,将字符串类路径(例如:/my/dir/myjar.jar/my/dir/myjar2.jar…)转换为通配符,在该通配符中,来自同一目录的多个jar显示在类路径中?以下是我的工作: public static String convertClasspathToW

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

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


我如何编写一个java方法,将字符串类路径(例如:
/my/dir/myjar.jar/my/dir/myjar2.jar…
)转换为通配符,在该通配符中,来自同一目录的多个jar显示在类路径中?

以下是我的工作:

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();
  }
公共静态字符串转换器ClassPathTowildCard(字符串cp){
Set parentCountMap=new HashSet();
for(字符串nextJar:cp.split(SystemUtils.IS_OS_WINDOWS&&cp.contains(“;”);“:”)){
String substring=nextJar.substring(0,nextJar.lastIndexOf(File.separator));
parentCountMap.add(子字符串);
}
StringBuilder newCp=新的StringBuilder();
用于(字符串父项:parentCountMap){
如果(newCp.length()>0){
append(SystemUtils.IS_OS_WINDOWS?;“:”:”;
}
newCp.append(parent+File.separator+“*”);
}
返回newCp.toString();
}

不太管用,但这正是我想要的主意

从命令行可以使用
/my/dir/*.jar
?为什么?使用清单更简单、更安全,并且不会出现这个问题。simpler是一个相对术语,文件本身会引起一些戏剧性的变化。并且@Code学徒否,我在下面调整我的答案。它还不太管用,今天就可以用了。事实上,再看一眼之后,@EJP是对的。有时最好的建议来自于评论