1--- misc/lucene-2.9.4/src/java/org/apache/lucene/store/FSDirectory.java 2010-11-27 19:21:44.000000000 -0500 2+++ misc/build/lucene-2.9.4/src/java/org/apache/lucene/store/FSDirectory.java 2012-12-08 19:23:23.000000000 -0500 3@@ -266,7 +266,14 @@ 4 public static FSDirectory getDirectory(File file, LockFactory lockFactory) 5 throws IOException 6 { 7- file = getCanonicalPath(file); 8+ String path = file.getPath(); 9+ //File.getCanonicalPath fails on Windows with long path names 10+ //Long path names created by osl_getSystemPathFromFileURL are already 11+ //unique because its implementation replaces the occurrences of .. and . 12+ //That is using the com.sun.star.help.HelpIndexer service from c++ is 13+ //relatively safe. 14+ if (!path.startsWith("\\\\?\\")) 15+ file = getCanonicalPath(file); 16 17 FSDirectory dir; 18 synchronized (DIRECTORIES) { 19@@ -721,7 +728,15 @@ 20 ensureOpen(); 21 String dirName; // name to be hashed 22 try { 23- dirName = directory.getCanonicalPath(); 24+ //File.getCanonicalPath fails on Windows with long path names 25+ //Long path names created by osl_getSystemPathFromFileURL are already 26+ //unique because its implementation replaces the occurrences of .. and . 27+ //That is using the com.sun.star.help.HelpIndexer service from c++ is 28+ //relatively safe. 29+ if (!directory.getPath().startsWith("\\\\?\\")) 30+ dirName = directory.getCanonicalPath(); 31+ else 32+ dirName = directory.getPath(); 33 } catch (IOException e) { 34 throw new RuntimeException(e.toString(), e); 35 } 36