2016-09-20 49 views
-1

我從代理啓動器啓動java。類路徑變得非常大,我需要使用manifest.mf文件,否則Windows將耗盡cmd行空間(bash也有一個限制,但它更高,所以我們沒有看到它)。將java字符串類路徑轉換爲通配符,其中來自同一目錄的多個「N」個罐子出現在類路徑中?

我寧願只在類路徑中使用通配符。

如何編寫一個java方法,可以將字符串類路徑(例如:/my/dir/myjar.jar /my/dir/myjar2.jar ...)轉換爲通配符,其中來自同一目錄的多個N罐子顯示在類路徑中?

+0

從命令行可以使用'/ my/dir/*。jar'嗎? –

+0

爲什麼?使用清單更簡單,更安全,並且不存在此問題。 – EJP

+0

簡單是一個相對術語,文件本身引起一些戲劇性。 –

回答

-1

這裏是我的工作了:

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(); 
    } 

完全不是那麼回事,但它是我要去的想法。