java - 如何从 Spring Cloud 中的 URL 中提取 jar 名称和文件名称?

标签 java spring spring-boot

最近在玩Spring Cloud。而我想从一个URL中提取出jar的名称和jar中的文件名。

例如,我有一个网址:

jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar!/BOOT-INF/classes!/filename.json

我想得到两个 String

/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar

/BOOT-INF/classes/filename.json

请注意,在两个 String 中都没有 !。我怎样才能做到这一点?

这里的一个主要问题是 spring 将在 BOOT-INF/classes 之后添加 ! 并创建一个新的 Jar URL 分隔符。

最佳答案

使用split和分隔符!,然后合并结果

String s = "jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar!/BOOT-INF/classes!/filename.json";

     String[] arr = s.split("!");
     System.out.println(arr[0]);
     System.out.println(arr[1]+arr[2]);

输出

jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar
/BOOT-INF/classes/filename.json

或者您也可以使用正则表达式将 jar! 上的字符串拆分为包含它的分隔符,然后将所有 ! 替换为空字符串

 String s = "jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar!/BOOT-INF/classes!/filename.json";

     String[] arr = s.split("(?<=jar!)");
     System.out.println(arr[0].replaceAll("!", ""));
     System.out.println(arr[1].replaceAll("!", ""));

输出

jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar
/BOOT-INF/classes/filename.json

关于java - 如何从 Spring Cloud 中的 URL 中提取 jar 名称和文件名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57139580/

相关文章:

java - 仅在 jTextPane 中为一个字符着色

Java运行时真空数据库

java - 为什么从 XAResource 抛出 XAException 仍然不允许事务提交成功?

java - spring webflux 是否支持javax bean验证?

java - 切入点格式不正确

validation - 为什么我们需要对 google recaptcha 进行服务器端验证?

java - 排列 JSON 对象中的元素?

java - Hibernate 4.3.0.Final 和 Spring Data JPA 1.4.3.RELEASE

java - 如何从@ControllerAdvice中排除特定的包?

java - 手动设置 HttpStatus 时 @ExceptionHandler 失败