Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8315405

Can't start process in directory with very long path

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: External
    • Icon: P4 P4
    • None
    • 11, 17, 21, 22
    • core-libs
    • None

      File API on Windows has always had the maximum length of a path set to MAX_PATH = 260 [1]. Java uses the '\\?\' prefix to overcome this limitation, it can create directories which are longer than MAX_PATH.

      But starting a process in such a directory fails.

      The attached test case, WindowsLongPathProcess.java, fails with the following exception:

      Exception in thread "main" java.io.IOException: Cannot run program "C:\devtools\jdk11\bin\java" (in directory "C:\Users\<user-name>\AppData\Local\Temp\longPathTest14815407149482723603\0123456789...0123456789"): CreateProcess error=267, The directory name is invalid
              at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
              at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
              at WindowsLongPathProcess.main(WindowsLongPathProcess.java:34)
      Caused by: java.io.IOException: CreateProcess error=267, The directory name is invalid
              at java.base/java.lang.ProcessImpl.create(Native Method)
              at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:492)
              at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:153)
              at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
              ... 2 more


      This problem was discovered when running individual jtreg tests, and a test had a long name.

      [1] https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation

            rriggs Roger Riggs
            aivanov Alexey Ivanov
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: