--- old/src/java.base/windows/classes/java/io/WinNTFileSystem.java 2018-03-12 11:23:26.000000000 -0700 +++ new/src/java.base/windows/classes/java/io/WinNTFileSystem.java 2018-03-12 11:23:25.000000000 -0700 @@ -43,7 +43,8 @@ private final char slash; private final char altSlash; private final char semicolon; - private final String userDir; + private String userDir; + private volatile boolean isUserDirNormal; public WinNTFileSystem() { Properties props = GetPropertyAction.privilegedGetProperties(); @@ -353,7 +354,17 @@ if (sm != null) { sm.checkPropertyAccess("user.dir"); } - return normalize(userDir); + boolean normalize = !isUserDirNormal; + if (normalize) { + synchronized(userDir) { + normalize = !isUserDirNormal; + if (normalize) { + userDir = normalize(userDir); + isUserDirNormal = true; + } + } + } + return userDir; } private String getDrive(String path) {