1.1 --- a/src/share/classes/com/sun/tools/javap/JavapTask.java Tue Sep 08 11:29:58 2009 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javap/JavapTask.java Tue Sep 08 11:43:57 2009 -0700 1.3 @@ -455,8 +455,19 @@ 1.4 return EXIT_CMDERR; 1.5 } 1.6 1.7 - boolean ok = run(); 1.8 - return ok ? EXIT_OK : EXIT_ERROR; 1.9 + try { 1.10 + boolean ok = run(); 1.11 + return ok ? EXIT_OK : EXIT_ERROR; 1.12 + } finally { 1.13 + if (defaultFileManager != null) { 1.14 + try { 1.15 + defaultFileManager.close(); 1.16 + defaultFileManager = null; 1.17 + } catch (IOException e) { 1.18 + throw new InternalError(e); 1.19 + } 1.20 + } 1.21 + } 1.22 } catch (BadArgs e) { 1.23 reportError(e.key, e.args); 1.24 if (e.showUsage) { 1.25 @@ -856,7 +867,9 @@ 1.26 } 1.27 1.28 private JavaFileManager getDefaultFileManager(final DiagnosticListener<? super JavaFileObject> dl, PrintWriter log) { 1.29 - return JavapFileManager.create(dl, log); 1.30 + if (defaultFileManager == null) 1.31 + defaultFileManager = JavapFileManager.create(dl, log); 1.32 + return defaultFileManager; 1.33 } 1.34 1.35 private JavaFileObject getClassFileObject(String className) throws IOException { 1.36 @@ -1004,6 +1017,7 @@ 1.37 1.38 protected Context context; 1.39 JavaFileManager fileManager; 1.40 + JavaFileManager defaultFileManager; 1.41 PrintWriter log; 1.42 DiagnosticListener<? super JavaFileObject> diagnosticListener; 1.43 List<String> classes;