# HG changeset patch # User jjg # Date 1279073875 25200 # Node ID 0e1fab5cffc864930113588c348ae424bd8f5ac7 # Parent a5454419dd4632198e3ea6d7387398d3f242f357 6968434: test CheckResourceKeys fails on control builds Reviewed-by: darcy diff -r a5454419dd46 -r 0e1fab5cffc8 test/tools/javac/diags/CheckResourceKeys.java --- a/test/tools/javac/diags/CheckResourceKeys.java Tue Jul 13 19:14:09 2010 -0700 +++ b/test/tools/javac/diags/CheckResourceKeys.java Tue Jul 13 19:17:55 2010 -0700 @@ -294,6 +294,7 @@ Set results = new TreeSet(); JavaCompiler c = ToolProvider.getSystemJavaCompiler(); JavaFileManager fm = c.getStandardFileManager(null, null, null); + JavaFileManager.Location javacLoc = findJavacLocation(fm); String[] pkgs = { "javax.annotation.processing", "javax.lang.model", @@ -302,7 +303,7 @@ "com.sun.tools.javac" }; for (String pkg: pkgs) { - for (JavaFileObject fo: fm.list(StandardLocation.PLATFORM_CLASS_PATH, + for (JavaFileObject fo: fm.list(javacLoc, pkg, EnumSet.of(JavaFileObject.Kind.CLASS), true)) { String name = fo.getName(); // ignore resource files, and files which are not really part of javac @@ -316,6 +317,23 @@ return results; } + // depending on how the test is run, javac may be on bootclasspath or classpath + JavaFileManager.Location findJavacLocation(JavaFileManager fm) { + JavaFileManager.Location[] locns = + { StandardLocation.PLATFORM_CLASS_PATH, StandardLocation.CLASS_PATH }; + try { + for (JavaFileManager.Location l: locns) { + JavaFileObject fo = fm.getJavaFileForInput(l, + "com.sun.tools.javac.Main", JavaFileObject.Kind.CLASS); + if (fo != null) + return l; + } + } catch (IOException e) { + throw new Error(e); + } + throw new IllegalStateException("Cannot find javac"); + } + /** * Get the set of strings from a class file. * Only strings that look like they might be a resource key are returned.