linyimin0812 / spring-startup-analyzer

spring-startup-analyzer generates an interactive spring application startup report that lets you understand what contributes to the application startup time and helps to optimize it.🚀
Apache License 2.0
1.52k stars 121 forks source link

Windows下的路径斜杆问题 #144

Open nn200433 opened 7 months ago

nn200433 commented 7 months ago
  private static String getLibHome() {

      // -javaagent:C:\runner\spring-startup-analyzer\lib\spring-profiler-agent.jar
      RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
      List<String> jvmArgs = bean.getInputArguments();

      for (String jvmArg : jvmArgs) {

          int index= jvmArg.indexOf(":");
          if (index + 1 >= jvmArg.length()) {
              continue;
          }

          String value = jvmArg.substring(index + 1);

          if (value.endsWith(AGENT_JAR)) {
              return value.substring(0, value.lastIndexOf(File.separator) + 1);
          }
      }

      return System.getProperty("user.home") + File.separator + "spring-startup-analyzer" + File.separator + "lib" + File.separator;

  }

建议支持下 / 反斜杆,被坑到了😂,在 Windows 下 File.separator 只能识别到 \\ 。 所有的示例(包括置顶的优化示例)写的都是反斜杆:

-Dspring-startup-analyzer.app.health.check.endpoints=http://localhost:8020/actuator/health -javaagent:C:/Users/huangyb1/spring-startup-analyzer/lib/spring-profiler-agent.jar

测试代码:

@Test
public void test1() {
    RuntimeMXBean bean    = ManagementFactory.getRuntimeMXBean();
    List<String>  jvmArgs = bean.getInputArguments();

    for (String jvmArg : jvmArgs) {

        int index= jvmArg.indexOf(":");
        if (index + 1 >= jvmArg.length()) {
            continue;
        }

        String value = jvmArg.substring(index + 1);

        if (value.endsWith("spring-profiler-agent.jar")) {
            System.out.println("原文 = " + value);
            System.out.println("File.separator = " + value.substring(0, value.lastIndexOf(File.separator) + 1));
            System.out.println("反斜杆 = " + value.substring(0, value.lastIndexOf("/") + 1));
        }
    }

    // return System.getProperty("user.home") + File.separator + "spring-startup-analyzer" + File.separator + "lib" + File.separator;
}

原文 = C:/Users/abc/spring-startup-analyzer/lib/spring-profiler-agent.jar File.separator = 反斜杆 = C:/Users/abc/spring-startup-analyzer/lib/

Nico-du commented 3 weeks ago

确实,我在win11系统 路径使用 / 一直启动找不到目录。原来是要用 \ 。。。。

hackstepz commented 1 week ago

还真是这个情况