--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Main.java Tue Mar 15 13:48:30 2016 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Main.java Thu Mar 17 19:04:28 2016 +0000
@@ -27,6 +27,7 @@
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URL;
import java.nio.file.NoSuchFileException;
@@ -144,7 +145,8 @@
try {
// A fresh context was created above, so jfm must be a JavacFileManager
((JavacFileManager)fileManager).close();
- } catch (IOException ignore) {
+ } catch (IOException ex) {
+ bugMessage(ex);
}
}
return result;
@@ -204,11 +206,13 @@
if (batchMode)
CacheFSInfo.preRegister(context);
+ boolean ok = true;
+
// init file manager
fileManager = context.get(JavaFileManager.class);
if (fileManager instanceof BaseFileManager) {
((BaseFileManager) fileManager).setContext(context); // reinit with options
- ((BaseFileManager) fileManager).handleOptions(args.getDeferredFileManagerOptions());
+ ok &= ((BaseFileManager) fileManager).handleOptions(args.getDeferredFileManagerOptions());
}
// handle this here so it works even if no other options given
@@ -219,7 +223,7 @@
showClass(showClass);
}
- boolean ok = args.validate();
+ ok &= args.validate();
if (!ok || log.nerrors > 0)
return Result.CMDERR;
@@ -348,28 +352,28 @@
void showClass(String className) {
PrintWriter pw = log.getWriter(WriterKind.NOTICE);
pw.println("javac: show class: " + className);
+
URL url = getClass().getResource('/' + className.replace('.', '/') + ".class");
- if (url == null)
- pw.println(" class not found");
- else {
+ if (url != null) {
pw.println(" " + url);
- try {
- final String algorithm = "MD5";
- byte[] digest;
- MessageDigest md = MessageDigest.getInstance(algorithm);
- try (DigestInputStream in = new DigestInputStream(url.openStream(), md)) {
- byte[] buf = new byte[8192];
- int n;
- do { n = in.read(buf); } while (n > 0);
- digest = md.digest();
- }
- StringBuilder sb = new StringBuilder();
- for (byte b: digest)
- sb.append(String.format("%02x", b));
- pw.println(" " + algorithm + " checksum: " + sb);
- } catch (NoSuchAlgorithmException | IOException e) {
- pw.println(" cannot compute digest: " + e);
+ }
+
+ try (InputStream in = getClass().getResourceAsStream('/' + className.replace('.', '/') + ".class")) {
+ final String algorithm = "MD5";
+ byte[] digest;
+ MessageDigest md = MessageDigest.getInstance(algorithm);
+ try (DigestInputStream din = new DigestInputStream(in, md)) {
+ byte[] buf = new byte[8192];
+ int n;
+ do { n = din.read(buf); } while (n > 0);
+ digest = md.digest();
}
+ StringBuilder sb = new StringBuilder();
+ for (byte b: digest)
+ sb.append(String.format("%02x", b));
+ pw.println(" " + algorithm + " checksum: " + sb);
+ } catch (NoSuchAlgorithmException | IOException e) {
+ pw.println(" cannot compute digest: " + e);
}
}