8049367: Modular Run-Time Images
authorchegar
Wed, 03 Dec 2014 14:25:46 +0000
changeset 27579 d1a63c99cdd5
parent 27578 d61af14a5cf7
child 27580 ca12cdda0551
8049367: Modular Run-Time Images Reviewed-by: jlahoda, ksrini Contributed-by: alan.bateman@oracle.com, alex.buckley@oracle.com, bradford.wetmore@oracle.com, chris.hegarty@oracle.com, erik.joelsson@oracle.com, james.laskey@oracle.com, jonathan.gibbons@oracle.com, karen.kinnear@oracle.com, magnus.ihse.bursie@oracle.com, mandy.chung@oracle.com, mark.reinhold@oracle.com, paul.sandoz@oracle.com, sundararajan.athijegannathan@oracle.com
langtools/make/CommonLangtools.gmk
langtools/make/CompileInterim.gmk
langtools/make/GensrcLangtools.gmk
langtools/make/Tools.gmk
langtools/make/gensrc/Gensrc-jdk.compiler.gmk
langtools/make/gensrc/Gensrc-jdk.dev.gmk
langtools/make/gensrc/Gensrc-jdk.javadoc.gmk
langtools/make/gensrc/GensrcCommon.gmk
langtools/make/tools/crules/MutableFieldsAnalyzer.java
langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/ClientCodeWrapper.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JRTIndex.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/RelativePath.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/SymbolArchive.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/nio/JavacPathFileManager.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/nio/PathFileObject.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/ct.properties
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/BaseFileManager.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/javap/JavapTask.java
langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/SmartFileManager.java
langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Archive.java
langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ClassFileReader.java
langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/JdepsTask.java
langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Module.java
langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ModulesXmlReader.java
langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/PlatformClassPath.java
langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Profile.java
langtools/test/com/sun/javadoc/testCompletionFailure/TestCompletionFailure.java
langtools/test/tools/apt/Basics/CheckAptIsRemovedTest.java
langtools/test/tools/doclint/tool/PathsTest.java
langtools/test/tools/javac/6508981/TestInferBinaryName.java
langtools/test/tools/javac/EarlyAssertWrapper.java
langtools/test/tools/javac/Paths/Class-Path.sh
langtools/test/tools/javac/Paths/Class-Path2.sh
langtools/test/tools/javac/Paths/CompileClose.java
langtools/test/tools/javac/Paths/Diagnostics.sh
langtools/test/tools/javac/Paths/MineField.sh
langtools/test/tools/javac/Paths/SameJVM.java
langtools/test/tools/javac/Paths/Util.sh
langtools/test/tools/javac/T6558476.java
langtools/test/tools/javac/T6654037.java
langtools/test/tools/javac/T6705935.java
langtools/test/tools/javac/T6725036.java
langtools/test/tools/javac/T6873845.java
langtools/test/tools/javac/annotations/TestAnnotationPackageInfo.java
langtools/test/tools/javac/api/6411310/Test.java
langtools/test/tools/javac/api/6598108/T6598108.java
langtools/test/tools/javac/api/6608214/T6608214.java
langtools/test/tools/javac/api/T6412669.java
langtools/test/tools/javac/api/T6430241.java
langtools/test/tools/javac/api/T6877206.java
langtools/test/tools/javac/api/TestJavacTaskScanner.java
langtools/test/tools/javac/api/TestSearchPaths.java
langtools/test/tools/javac/diags/CheckResourceKeys.java
langtools/test/tools/javac/diags/examples/NotInProfile.java
langtools/test/tools/javac/lib/CompileFail.java
langtools/test/tools/javac/nio/compileTest/CompileTest.java
langtools/test/tools/javac/nio/compileTest/HelloPathWorld.java
langtools/test/tools/javac/processing/model/testgetallmembers/Main.java
langtools/test/tools/javac/processing/options/testPrintProcessorInfo/TestWithXstdout.java
langtools/test/tools/javac/profiles/ProfileOptionTest.java
langtools/test/tools/javadoc/6942366/T6942366.java
langtools/test/tools/javadoc/6964914/TestUserDoclet.java
langtools/test/tools/javadoc/api/basic/GetTask_FileManagerTest.java
langtools/test/tools/javah/T5070898.java
langtools/test/tools/javah/T6893943.java
langtools/test/tools/javah/compareTest/CompareTest.java
langtools/test/tools/javah/compareTest/CompareTest.sh
langtools/test/tools/javah/compareTest/FindNativeFiles.java
langtools/test/tools/javah/compareTest/README
langtools/test/tools/javap/T6729471.java
langtools/test/tools/javap/WhitespaceTest.java
langtools/test/tools/jdeps/APIDeps.java
langtools/test/tools/jdeps/Basic.java
langtools/test/tools/jdeps/DotFileTest.java
langtools/test/tools/jdeps/profiles.properties
langtools/test/tools/lib/ToolBox.java
langtools/test/tools/sjavac/OptionDecoding.java
--- a/langtools/make/CommonLangtools.gmk	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# The BOOT_JAVAC setup uses the boot jdk compiler to compile the tools
-# and the interim javac, to be run by the boot jdk.
-$(eval $(call SetupJavaCompiler,BOOT_JAVAC, \
-    JAVAC := $(JAVAC), \
-    SERVER_DIR := $(SJAVAC_SERVER_DIR), \
-    SERVER_JVM := $(SJAVAC_SERVER_JAVA), \
-    FLAGS := -XDignore.symbol.file=true -g -Xlint:all$(COMMA)-deprecation -Werror))
-
-# javax.tools.JavaCompilerTool isn't really a suffix but this gets the file copied.
-RESOURCE_SUFFIXES := .gif .xml .css .js javax.tools.JavaCompilerTool
--- a/langtools/make/CompileInterim.gmk	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/make/CompileInterim.gmk	Wed Dec 03 14:25:46 2014 +0000
@@ -29,9 +29,9 @@
 include $(SPEC)
 include MakeBase.gmk
 include JavaCompilation.gmk
+include SetupJavaCompilers.gmk
 
-include CommonLangtools.gmk
-
+################################################################################
 # Setup the rules to build the interim langtools jar, which is compiled by
 # the boot javac and can be run on the boot jdk. This will be used to compile
 # the rest of the product. Include the Genstubs build tool in this compilation
@@ -44,12 +44,12 @@
       $(LANGTOOLS_TOPDIR)/src/jdk.dev/share/classes \
       $(LANGTOOLS_TOPDIR)/src/jdk.javadoc/share/classes \
       $(LANGTOOLS_TOPDIR)/src/java.base/share/classes \
-      $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler \
-      $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.dev \
-      $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.javadoc, \
-    EXCLUDES := com/sun/tools/javac/nio compileproperties anttasks crules, \
-    COPY := $(RESOURCE_SUFFIXES) jdeps.properties jdkinternals.properties version.properties, \
-    BIN := $(LANGTOOLS_OUTPUTDIR)/interim_classes, \
+      $(SUPPORT_OUTPUTDIR)/gensrc/jdk.compiler \
+      $(SUPPORT_OUTPUTDIR)/gensrc/jdk.dev \
+      $(SUPPORT_OUTPUTDIR)/gensrc/jdk.javadoc, \
+    EXCLUDES := sun jdk, \
+    COPY := .gif .xml .css .js javax.tools.JavaCompilerTool, \
+    BIN := $(BUILDTOOLS_OUTPUTDIR)/langtools_interim_classes, \
     JAR := $(INTERIM_LANGTOOLS_JAR)))
 
 all: $(BUILD_INTERIM_LANGTOOLS)
--- a/langtools/make/GensrcLangtools.gmk	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-#
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# This must be the first rule
-default: all
-
-include $(SPEC)
-include MakeBase.gmk
-include JavaCompilation.gmk
-
-include CommonLangtools.gmk
-
-################################################################################
-# Setup the compilation of the properties compilation tool. You can depend
-# upon $(BUILD_TOOLS_LANGTOOLS) to trigger a compilation of the tools. Note that 
-# we add src/share/classes to the sourcepath. This is necessary since the 
-# GenStubs program needs to be linked and run with the new javac sources.
-$(eval $(call SetupJavaCompilation,BUILD_TOOLS_LANGTOOLS, \
-    SETUP := BOOT_JAVAC, \
-    DISABLE_SJAVAC := true, \
-    ADD_JAVAC_FLAGS := -Xprefer:source, \
-    SRC := $(LANGTOOLS_TOPDIR)/make/tools, \
-    INCLUDES := compileproperties, \
-    BIN := $(LANGTOOLS_OUTPUTDIR)/buildtools_classes))
-
-################################################################################
-# The compileprops tools compiles a properties file into a resource bundle.
-TOOL_COMPILEPROPS_CMD := $(JAVA) -cp $(LANGTOOLS_OUTPUTDIR)/buildtools_classes \
-    compileproperties.CompileProperties -quiet
-
-# Lookup the properties that need to be compiled into resource bundles.
-PROPSOURCES := $(shell $(FIND) $(LANGTOOLS_TOPDIR)/src/*/share/classes -name "*.properties")
-
-# Convert .../src/<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties
-# to .../langtools/gensrc/<module>/com/sun/tools/javac/resources/javac_zh_CN.java
-# Strip away prefix and suffix, leaving for example only: 
-# "<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN"
-PROPJAVAS := $(patsubst $(LANGTOOLS_TOPDIR)/src/%.properties, \
-    $(LANGTOOLS_OUTPUTDIR)/gensrc/%.java, \
-    $(subst /share/classes,,$(PROPSOURCES)))
-
-# Generate the package dirs for the tobe generated java files. Sort to remove
-# duplicates.
-PROPDIRS := $(sort $(dir $(PROPJAVAS)))
-
-# Now generate a sequence of:
-# "-compile ...javac_zh_CN.properties ...javac_zh_CN.java java.util.ListResourceBundle"
-# suitable to be fed into the CompileProperties command.
-PROPCMDLINE := $(subst _SPACE_, $(SPACE), \
-    $(join $(addprefix -compile_SPACE_, $(PROPSOURCES)), \
-    $(addsuffix _SPACE_java.util.ListResourceBundle, \
-    $(addprefix _SPACE_, $(PROPJAVAS)))))
-
-# Now setup the rule for the generation of the resource bundles.
-$(LANGTOOLS_OUTPUTDIR)/gensrc/_the_props: $(PROPSOURCES) $(BUILD_TOOLS_LANGTOOLS)
-	$(RM) -r $(@D)/*
-	$(MKDIR) -p $(@D) $(PROPDIRS)
-	$(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" \
-	    > $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javah/resources/version.properties
-	$(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" \
-	    > $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javap/resources/version.properties
-	$(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" \
-	    > $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javac/resources/version.properties
-	$(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" \
-	    > $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.dev/com/sun/tools/jdeps/resources/version.properties
-	$(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" \
-	    > $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.javadoc/com/sun/tools/javadoc/resources/version.properties
-	$(ECHO) Compiling $(words $(PROPSOURCES) v1 v2 v3) properties into resource bundles
-	$(TOOL_COMPILEPROPS_CMD) $(PROPCMDLINE) \
-	    -compile $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javah/resources/version.properties \
-	        $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javah/resources/version.java \
-	        java.util.ListResourceBundle \
-	    -compile $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javap/resources/version.properties \
-	        $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javap/resources/version.java \
-	        java.util.ListResourceBundle \
-	    -compile $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javac/resources/version.properties \
-	        $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.compiler/com/sun/tools/javac/resources/version.java \
-	        java.util.ListResourceBundle \
-	    -compile $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.dev/com/sun/tools/jdeps/resources/version.properties \
-	        $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.dev/com/sun/tools/jdeps/resources/version.java \
-	        java.util.ListResourceBundle \
-	    -compile $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.javadoc/com/sun/tools/javadoc/resources/version.properties \
-	        $(LANGTOOLS_OUTPUTDIR)/gensrc/jdk.javadoc/com/sun/tools/javadoc/resources/version.java \
-	        java.util.ListResourceBundle
-	$(TOUCH) $@
-
-all: $(LANGTOOLS_OUTPUTDIR)/gensrc/_the_props
-
-################################################################################
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/Tools.gmk	Wed Dec 03 14:25:46 2014 +0000
@@ -0,0 +1,45 @@
+#
+# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# This must be the first rule
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JavaCompilation.gmk
+include SetupJavaCompilers.gmk
+
+################################################################################
+# Setup the compilation of the properties compilation tool. You can depend
+# upon $(BUILD_TOOLS_LANGTOOLS) to trigger a compilation of the tools.
+$(eval $(call SetupJavaCompilation,BUILD_TOOLS_LANGTOOLS, \
+    SETUP := BOOT_JAVAC, \
+    DISABLE_SJAVAC := true, \
+    ADD_JAVAC_FLAGS := -Xprefer:source, \
+    SRC := $(LANGTOOLS_TOPDIR)/make/tools, \
+    INCLUDES := compileproperties, \
+    BIN := $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes))
+
+all: $(BUILD_TOOLS_LANGTOOLS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/gensrc/Gensrc-jdk.compiler.gmk	Wed Dec 03 14:25:46 2014 +0000
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+include GensrcCommon.gmk
+
+$(eval $(call SetupVersionProperties,JAVAC_VERSION,\
+    com/sun/tools/javac/resources/version.properties))
+
+$(eval $(call SetupVersionProperties,JAVAH_VERSION,\
+    com/sun/tools/javah/resources/version.properties))
+
+$(eval $(call SetupVersionProperties,JAVAP_VERSION,\
+    com/sun/tools/javap/resources/version.properties))
+
+$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES,\
+    $(JAVAC_VERSION) $(JAVAH_VERSION) $(JAVAP_VERSION)))
+
+all: $(COMPILE_PROPERTIES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/gensrc/Gensrc-jdk.dev.gmk	Wed Dec 03 14:25:46 2014 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+include GensrcCommon.gmk
+
+$(eval $(call SetupVersionProperties,JDEPS_VERSION,\
+    com/sun/tools/jdeps/resources/version.properties))
+
+$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, $(JDEPS_VERSION)))
+
+all: $(COMPILE_PROPERTIES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/gensrc/Gensrc-jdk.javadoc.gmk	Wed Dec 03 14:25:46 2014 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+include GensrcCommon.gmk
+
+$(eval $(call SetupVersionProperties,JAVADOC_VERSION,\
+    com/sun/tools/javadoc/resources/version.properties))
+
+$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, $(JAVADOC_VERSION)))
+
+all: $(COMPILE_PROPERTIES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/gensrc/GensrcCommon.gmk	Wed Dec 03 14:25:46 2014 +0000
@@ -0,0 +1,95 @@
+#
+# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# This must be the first rule
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JavaCompilation.gmk
+
+################################################################################
+# The compileprops tools compiles a properties file into a resource bundle.
+TOOL_COMPILEPROPS_CMD := $(JAVA) -cp $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes \
+    compileproperties.CompileProperties -quiet
+
+
+################################################################################
+# Sets up a rule that creates a version.properties file in the gensrc output
+# directory.
+# Param 1 - Variable to add generated file name to
+# Param 2 - Name of version.properties file including packages from the src
+#           root.
+define SetupVersionProperties
+  $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/$$(strip $2):
+	$(MKDIR) -p $$(@D)
+	$(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" \
+	    > $$@
+
+  $$(strip $1) += $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/$$(strip $2)
+endef
+
+################################################################################
+# Finds all properties files in the module source and creates a rule that runs
+# CompileProperties on them into the gensrc dir.
+# Param 1 - Variable to add targets to
+# Param 2 - Extra properties files to process
+define SetupCompileProperties
+  # Lookup the properties that need to be compiled into resource bundles.
+  PROPSOURCES := $2 $$(shell $(FIND) $(LANGTOOLS_TOPDIR)/src/$(MODULE)/share/classes -name "*.properties")
+
+  # Convert .../src/<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties
+  # to .../langtools/gensrc/<module>/com/sun/tools/javac/resources/javac_zh_CN.java
+  # Strip away prefix and suffix, leaving for example only: 
+  # "<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN"
+  PROPJAVAS := $$(patsubst $(LANGTOOLS_TOPDIR)/src/%, \
+      $(SUPPORT_OUTPUTDIR)/gensrc/%, \
+      $$(patsubst %.properties, %.java, \
+      $$(subst /share/classes,, $$(PROPSOURCES))))
+
+  # Generate the package dirs for the tobe generated java files. Sort to remove
+  # duplicates.
+  PROPDIRS := $$(sort $$(dir $$(PROPJAVAS)))
+
+  # Now generate a sequence of:
+  # "-compile ...javac_zh_CN.properties ...javac_zh_CN.java java.util.ListResourceBundle"
+  # suitable to be fed into the CompileProperties command.
+  PROPCMDLINE := $$(subst _SPACE_, $(SPACE), \
+      $$(join $$(addprefix -compile_SPACE_, $$(PROPSOURCES)), \
+      $$(addsuffix _SPACE_java.util.ListResourceBundle, \
+      $$(addprefix _SPACE_, $$(PROPJAVAS)))))
+
+  # Now setup the rule for the generation of the resource bundles.
+  $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_props: $$(PROPSOURCES)
+	$(FIND) $$(@D) -name "*.java" $(FIND_DELETE)
+	$(MKDIR) -p $$(@D) $$(PROPDIRS)
+	$(ECHO) Compiling $$(words $$(PROPSOURCES)) properties into resource bundles for $(MODULE)
+	$(TOOL_COMPILEPROPS_CMD) $$(PROPCMDLINE)
+	$(TOUCH) $$@
+
+  $$(strip $1) += $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_props
+endef
+
+################################################################################
--- a/langtools/make/tools/crules/MutableFieldsAnalyzer.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/make/tools/crules/MutableFieldsAnalyzer.java	Wed Dec 03 14:25:46 2014 +0000
@@ -103,6 +103,9 @@
                 put("com.sun.tools.javac.file.ZipFileIndexCache",
                     Arrays.asList("sharedInstance"));
         classFieldsToIgnoreMap.
+                put("com.sun.tools.javac.file.JRTIndex",
+                    Arrays.asList("sharedInstance"));
+        classFieldsToIgnoreMap.
                 put("com.sun.tools.javac.main.JavaCompiler",
                     Arrays.asList("versionRB"));
         classFieldsToIgnoreMap.
--- a/langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java	Wed Dec 03 14:25:46 2014 +0000
@@ -25,17 +25,14 @@
 
 package javax.tools;
 
-import java.io.File;
 import java.lang.ref.Reference;
 import java.lang.ref.WeakReference;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.net.MalformedURLException;
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
 import java.util.logging.Logger;
 import java.util.logging.Level;
+
 import static java.util.logging.Level.*;
 
 /**
@@ -89,7 +86,7 @@
         return null;
     }
 
-    private static final String defaultJavaCompilerName
+    private static final String systemJavaCompilerName
         = "com.sun.tools.javac.api.JavacTool";
 
     /**
@@ -99,10 +96,10 @@
      * {@code null} if no compiler is provided
      */
     public static JavaCompiler getSystemJavaCompiler() {
-        return instance().getSystemTool(JavaCompiler.class, defaultJavaCompilerName);
+        return instance().getSystemTool(JavaCompiler.class, systemJavaCompilerName);
     }
 
-    private static final String defaultDocumentationToolName
+    private static final String systemDocumentationToolName
         = "com.sun.tools.javadoc.api.JavadocTool";
 
     /**
@@ -112,7 +109,7 @@
      * {@code null} if no documentation tool is provided
      */
     public static DocumentationTool getSystemDocumentationTool() {
-        return instance().getSystemTool(DocumentationTool.class, defaultDocumentationToolName);
+        return instance().getSystemTool(DocumentationTool.class, systemDocumentationToolName);
     }
 
     /**
@@ -125,13 +122,7 @@
      * or {@code null} if no tools are provided
      */
     public static ClassLoader getSystemToolClassLoader() {
-        try {
-            Class<? extends JavaCompiler> c =
-                    instance().getSystemToolClass(JavaCompiler.class, defaultJavaCompilerName);
-            return c.getClassLoader();
-        } catch (Throwable e) {
-            return trace(WARNING, e);
-        }
+        return ClassLoader.getSystemClassLoader();
     }
 
 
@@ -145,12 +136,7 @@
 
     // Cache for tool classes.
     // Use weak references to avoid keeping classes around unnecessarily
-    private Map<String, Reference<Class<?>>> toolClasses = new HashMap<>();
-
-    // Cache for tool classloader.
-    // Use a weak reference to avoid keeping it around unnecessarily
-    private Reference<ClassLoader> refToolClassLoader = null;
-
+    private final Map<String, Reference<Class<?>>> toolClasses = new HashMap<>();
 
     private ToolProvider() { }
 
@@ -158,9 +144,8 @@
         Class<? extends T> c = getSystemToolClass(clazz, name);
         try {
             return c.asSubclass(clazz).newInstance();
-        } catch (Throwable e) {
-            trace(WARNING, e);
-            return null;
+        } catch (InstantiationException | IllegalAccessException | RuntimeException | Error e) {
+            return trace(WARNING, e);
         }
     }
 
@@ -169,48 +154,12 @@
         Class<?> c = (refClass == null ? null : refClass.get());
         if (c == null) {
             try {
-                c = findSystemToolClass(name);
-            } catch (Throwable e) {
+                c = Class.forName(name, false, ClassLoader.getSystemClassLoader());
+            } catch (ClassNotFoundException | RuntimeException | Error e) {
                 return trace(WARNING, e);
             }
-            toolClasses.put(name, new WeakReference<Class<?>>(c));
+            toolClasses.put(name, new WeakReference<>(c));
         }
         return c.asSubclass(clazz);
     }
-
-    private static final String[] defaultToolsLocation = { "lib", "tools.jar" };
-
-    private Class<?> findSystemToolClass(String toolClassName)
-        throws MalformedURLException, ClassNotFoundException
-    {
-        // try loading class directly, in case tool is on the bootclasspath
-        try {
-            return Class.forName(toolClassName, false, null);
-        } catch (ClassNotFoundException e) {
-            trace(FINE, e);
-
-            // if tool not on bootclasspath, look in default tools location (tools.jar)
-            ClassLoader cl = (refToolClassLoader == null ? null : refToolClassLoader.get());
-            if (cl == null) {
-                File file = new File(System.getProperty("java.home"));
-                if (file.getName().equalsIgnoreCase("jre"))
-                    file = file.getParentFile();
-                for (String name : defaultToolsLocation)
-                    file = new File(file, name);
-
-                // if tools not found, no point in trying a URLClassLoader
-                // so rethrow the original exception.
-                if (!file.exists())
-                    throw e;
-
-                URL[] urls = { file.toURI().toURL() };
-                trace(FINE, urls[0].toString());
-
-                cl = URLClassLoader.newInstance(urls);
-                refToolClassLoader = new WeakReference<>(cl);
-            }
-
-            return Class.forName(toolClassName, false, cl);
-        }
-    }
 }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/ClientCodeWrapper.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/ClientCodeWrapper.java	Wed Dec 03 14:25:46 2014 +0000
@@ -26,6 +26,7 @@
 
 package com.sun.tools.javac.api;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -55,6 +56,7 @@
 import javax.tools.JavaFileManager.Location;
 import javax.tools.JavaFileObject;
 import javax.tools.JavaFileObject.Kind;
+import javax.tools.StandardJavaFileManager;
 
 import com.sun.source.util.TaskEvent;
 import com.sun.source.util.TaskListener;
@@ -115,11 +117,13 @@
     public JavaFileManager wrap(JavaFileManager fm) {
         if (isTrusted(fm))
             return fm;
+        if (fm instanceof StandardJavaFileManager)
+            return new WrappedStandardJavaFileManager((StandardJavaFileManager) fm);
         return new WrappedJavaFileManager(fm);
     }
 
     public FileObject wrap(FileObject fo) {
-        if (isTrusted(fo))
+        if (fo == null || isTrusted(fo))
             return fo;
         return new WrappedFileObject(fo);
     }
@@ -132,7 +136,7 @@
     }
 
     public JavaFileObject wrap(JavaFileObject fo) {
-        if (isTrusted(fo))
+        if (fo == null || isTrusted(fo))
             return fo;
         return new WrappedJavaFileObject(fo);
     }
@@ -360,6 +364,79 @@
         }
     }
 
+    protected class WrappedStandardJavaFileManager extends WrappedJavaFileManager
+            implements StandardJavaFileManager {
+        WrappedStandardJavaFileManager(StandardJavaFileManager clientJavaFileManager) {
+            super(clientJavaFileManager);
+        }
+
+        @Override @DefinedBy(Api.COMPILER)
+        public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files) {
+            try {
+                return ((StandardJavaFileManager)clientJavaFileManager).getJavaFileObjectsFromFiles(files);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException | Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override @DefinedBy(Api.COMPILER)
+        public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
+            try {
+                return ((StandardJavaFileManager)clientJavaFileManager).getJavaFileObjects(files);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException | Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override @DefinedBy(Api.COMPILER)
+        public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
+            try {
+                return ((StandardJavaFileManager)clientJavaFileManager).getJavaFileObjectsFromStrings(names);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException | Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override @DefinedBy(Api.COMPILER)
+        public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
+            try {
+                return ((StandardJavaFileManager)clientJavaFileManager).getJavaFileObjects(names);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException | Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override @DefinedBy(Api.COMPILER)
+        public void setLocation(Location location, Iterable<? extends File> path) throws IOException {
+            try {
+                ((StandardJavaFileManager)clientJavaFileManager).setLocation(location, path);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException | Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override @DefinedBy(Api.COMPILER)
+        public Iterable<? extends File> getLocation(Location location) {
+            try {
+                return ((StandardJavaFileManager)clientJavaFileManager).getLocation(location);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException | Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+    }
+
     protected class WrappedFileObject implements FileObject {
         protected FileObject clientFileObject;
         WrappedFileObject(FileObject clientFileObject) {
@@ -558,47 +635,47 @@
             this.d = d;
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public Diagnostic.Kind getKind() {
             return d.getKind();
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public JavaFileObject getSource() {
             return unwrap(d.getSource());
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public long getPosition() {
             return d.getPosition();
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public long getStartPosition() {
             return d.getStartPosition();
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public long getEndPosition() {
             return d.getEndPosition();
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public long getLineNumber() {
             return d.getLineNumber();
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public long getColumnNumber() {
             return d.getColumnNumber();
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public String getCode() {
             return d.getCode();
         }
 
-        @DefinedBy(Api.COMPILER)
+        @Override @DefinedBy(Api.COMPILER)
         public String getMessage(Locale locale) {
             return d.getMessage(locale);
         }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java	Wed Dec 03 14:25:46 2014 +0000
@@ -27,21 +27,33 @@
 
 import java.io.*;
 import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
+
 import javax.lang.model.SourceVersion;
-import javax.tools.JavaFileObject;
 import javax.tools.JavaFileManager;
 import javax.tools.JavaFileManager.Location;
+import javax.tools.JavaFileObject;
 import javax.tools.StandardJavaFileManager;
 
-import static javax.tools.StandardLocation.*;
-
-import com.sun.tools.javac.comp.Annotate;
 import com.sun.tools.javac.code.Scope.WriteableScope;
 import com.sun.tools.javac.code.Symbol.*;
+import com.sun.tools.javac.code.Symbol.ClassSymbol;
+import com.sun.tools.javac.code.Symbol.Completer;
+import com.sun.tools.javac.code.Symbol.CompletionFailure;
+import com.sun.tools.javac.code.Symbol.PackageSymbol;
+import com.sun.tools.javac.code.Symbol.TypeSymbol;
+import com.sun.tools.javac.comp.Annotate;
+import com.sun.tools.javac.file.JRTIndex;
+import com.sun.tools.javac.file.JavacFileManager;
+import com.sun.tools.javac.file.RelativePath.RelativeDirectory;
 import com.sun.tools.javac.jvm.ClassReader;
+import com.sun.tools.javac.jvm.Profile;
 import com.sun.tools.javac.util.*;
 
+import static javax.tools.StandardLocation.*;
+
 import static com.sun.tools.javac.code.Flags.*;
 import static com.sun.tools.javac.code.Kinds.Kind.*;
 
@@ -126,6 +138,18 @@
     protected Symbol currentOwner = null;
 
     /**
+     * The currently selected profile.
+     */
+    private final Profile profile;
+
+    /**
+     * Use direct access to the JRTIndex to access the temporary
+     * replacement for the info that used to be in ct.sym.
+     * In time, this will go away and be replaced by the module system.
+     */
+    private final JRTIndex jrtIndex;
+
+    /**
      * Completer that delegates to the complete-method of this class.
      */
     private final Completer thisCompleter = new Completer() {
@@ -168,13 +192,73 @@
         preferSource = "source".equals(options.get("-Xprefer"));
         userPathsFirst = options.isSet(XXUSERPATHSFIRST);
 
-
         completionFailureName =
             options.isSet("failcomplete")
             ? names.fromString(options.get("failcomplete"))
             : null;
+
+        // Temporary, until more info is available from the module system.
+        boolean useCtProps;
+        JavaFileManager fm = context.get(JavaFileManager.class);
+        if (fm instanceof JavacFileManager) {
+            JavacFileManager jfm = (JavacFileManager) fm;
+            useCtProps = jfm.isDefaultBootClassPath() && jfm.isSymbolFileEnabled();
+        } else if (fm.getClass().getName().equals("com.sun.tools.sjavac.comp.SmartFileManager")) {
+            useCtProps = !options.isSet("ignore.symbol.file");
+        } else {
+            useCtProps = false;
+        }
+        jrtIndex = useCtProps && JRTIndex.isAvailable() ? JRTIndex.getSharedInstance() : null;
+
+        profile = Profile.instance(context);
     }
 
+
+/************************************************************************
+ * Temporary ct.sym replacement
+ *
+ * The following code is a temporary substitute for the ct.sym mechanism
+ * used in JDK 6 thru JDK 8.
+ * This mechanism will eventually be superseded by the Jigsaw module system.
+ ***********************************************************************/
+
+    /**
+     * Returns any extra flags for a class symbol.
+     * This information used to be provided using private annotations
+     * in the class file in ct.sym; in time, this information will be
+     * available from the module system.
+     */
+    long getSupplementaryFlags(ClassSymbol c) {
+        if (jrtIndex == null || !jrtIndex.isInJRT(c.classfile)) {
+            return 0;
+        }
+
+        if (supplementaryFlags == null) {
+            supplementaryFlags = new HashMap<>();
+        }
+
+        Long flags = supplementaryFlags.get(c.packge());
+        if (flags == null) {
+            long newFlags = 0;
+            try {
+                JRTIndex.CtSym ctSym = jrtIndex.getCtSym(c.packge().flatName());
+                Profile minProfile = Profile.DEFAULT;
+                if (ctSym.proprietary)
+                    newFlags |= PROPRIETARY;
+                if (ctSym.minProfile != null)
+                    minProfile = Profile.lookup(ctSym.minProfile);
+                if (profile != Profile.DEFAULT && minProfile.value > profile.value) {
+                    newFlags |= NOT_IN_PROFILE;
+                }
+            } catch (IOException ignore) {
+            }
+            supplementaryFlags.put(c.packge(), flags = newFlags);
+        }
+        return flags;
+    }
+
+    private Map<PackageSymbol, Long> supplementaryFlags;
+
 /************************************************************************
  * Loading Classes
  ***********************************************************************/
@@ -259,6 +343,7 @@
                 }
                 if (classfile.getKind() == JavaFileObject.Kind.CLASS) {
                     reader.readClassFile(c);
+                    c.flags_field |= getSupplementaryFlags(c);
                 } else {
                     if (sourceCompleter != null) {
                         sourceCompleter.complete(c);
@@ -271,13 +356,15 @@
                 currentClassFile = previousClassFile;
             }
         } else {
-            JCDiagnostic diag =
-                diagFactory.fragment("class.file.not.found", c.flatname);
-            throw
-                newCompletionFailure(c, diag);
+            throw classFileNotFound(c);
         }
     }
     // where
+        private CompletionFailure classFileNotFound(ClassSymbol c) {
+            JCDiagnostic diag =
+                diagFactory.fragment("class.file.not.found", c.flatname);
+            return newCompletionFailure(c, diag);
+        }
         /** Static factory for CompletionFailure objects.
          *  In practice, only one can be used at a time, so we share one
          *  to reduce the expense of allocating new exception objects.
@@ -296,7 +383,7 @@
                 return result;
             }
         }
-        private CompletionFailure cachedCompletionFailure =
+        private final CompletionFailure cachedCompletionFailure =
             new CompletionFailure(null, (JCDiagnostic) null);
         {
             cachedCompletionFailure.setStackTrace(new StackTraceElement[0]);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JRTIndex.java	Wed Dec 03 14:25:46 2014 +0000
@@ -0,0 +1,272 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tools.javac.file;
+
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.lang.ref.SoftReference;
+import java.net.URI;
+import java.nio.file.DirectoryStream;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.spi.FileSystemProvider;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Set;
+
+import javax.tools.FileObject;
+
+import com.sun.tools.javac.file.RelativePath.RelativeDirectory;
+import com.sun.tools.javac.nio.PathFileObject;
+import com.sun.tools.javac.util.Context;
+
+/**
+ * A package-oriented index into the jrt: filesystem.
+ */
+public class JRTIndex {
+    /** Get a shared instance of the cache. */
+    private static JRTIndex sharedInstance;
+    public synchronized static JRTIndex getSharedInstance() {
+        if (sharedInstance == null) {
+            try {
+                sharedInstance = new JRTIndex();
+            } catch (IOException e) {
+                throw new UncheckedIOException(e);
+            }
+        }
+        return sharedInstance;
+    }
+
+    /** Get a context-specific instance of a cache. */
+    public static JRTIndex instance(Context context) {
+        try {
+            JRTIndex instance = context.get(JRTIndex.class);
+            if (instance == null)
+                context.put(JRTIndex.class, instance = new JRTIndex());
+            return instance;
+        } catch (IOException e) {
+            throw new UncheckedIOException(e);
+        }
+    }
+
+    public static boolean isAvailable() {
+        for (FileSystemProvider p: FileSystemProvider.installedProviders()) {
+            if (p.getScheme().equals("jrt"))
+                return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * The jrt: file system.
+     */
+    private final FileSystem jrtfs;
+
+    /**
+     * The set of module directories within the jrt: file system.
+     */
+    private final Set<Path> jrtModules;
+
+    /**
+     * A lazily evaluated set of entries about the contents of the jrt: file system.
+     */
+    private final Map<RelativeDirectory, SoftReference<Entry>> entries;
+
+    /**
+     * An entry provides cached info about a specific package directory within jrt:.
+     */
+    class Entry {
+        /**
+         * The regular files for this package.
+         * For now, assume just one instance of each file across all modules.
+         */
+        final Map<String, Path> files;
+
+        /**
+         * The set of subdirectories in jrt: for this package.
+         */
+        final Set<RelativeDirectory> subdirs;
+
+        /**
+         * The info that used to be in ct.sym for classes in this package.
+         */
+        final CtSym ctSym;
+
+        private Entry(Map<String, Path> files, Set<RelativeDirectory> subdirs, CtSym ctSym) {
+            this.files = files;
+            this.subdirs = subdirs;
+            this.ctSym = ctSym;
+        }
+    }
+
+    /**
+     * The info that used to be in ct.sym for classes in a package.
+     */
+    public static class CtSym {
+        /**
+         * The classes in this package are internal and not visible.
+         */
+        public final boolean hidden;
+        /**
+         * The classes in this package are proprietary and will generate a warning.
+         */
+        public final boolean proprietary;
+        /**
+         * The minimum profile in which classes in this package are available.
+         */
+        public final String minProfile;
+
+        CtSym(boolean hidden, boolean proprietary, String minProfile) {
+            this.hidden = hidden;
+            this.proprietary = proprietary;
+            this.minProfile = minProfile;
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder sb = new StringBuilder("CtSym[");
+            boolean needSep = false;
+            if (hidden) {
+                sb.append("hidden");
+                needSep = true;
+            }
+            if (proprietary) {
+                if (needSep) sb.append(",");
+                sb.append("proprietary");
+                needSep = true;
+            }
+            if (minProfile != null) {
+                if (needSep) sb.append(",");
+                sb.append(minProfile);
+            }
+            sb.append("]");
+            return sb.toString();
+        }
+
+        static final CtSym EMPTY = new CtSym(false, false, null);
+    }
+
+    /**
+     * Create and initialize the index.
+     */
+    private JRTIndex() throws IOException {
+        jrtfs = FileSystems.getFileSystem(URI.create("jrt:/"));
+        jrtModules = new LinkedHashSet<>();
+        Path root = jrtfs.getPath("/");
+        try (DirectoryStream<Path> stream = Files.newDirectoryStream(root)) {
+            for (Path entry: stream) {
+                if (Files.isDirectory(entry))
+                    jrtModules.add(entry);
+            }
+        }
+        entries = new HashMap<>();
+    }
+
+    public CtSym getCtSym(CharSequence packageName) throws IOException {
+        return getEntry(RelativeDirectory.forPackage(packageName)).ctSym;
+    }
+
+    synchronized Entry getEntry(RelativeDirectory rd) throws IOException {
+        SoftReference<Entry> ref = entries.get(rd);
+        Entry e = (ref == null) ? null : ref.get();
+        if (e == null) {
+            Map<String, Path> files = new LinkedHashMap<>();
+            Set<RelativeDirectory> subdirs = new LinkedHashSet<>();
+            for (Path module: jrtModules) {
+                Path p = rd.getFile(module);
+                if (!Files.exists(p))
+                    continue;
+                try (DirectoryStream<Path> stream = Files.newDirectoryStream(p)) {
+                    for (Path entry: stream) {
+                        String name = entry.getFileName().toString();
+                        if (Files.isRegularFile(entry)) {
+                            // TODO: consider issue of files with same name in different modules
+                            files.put(name, entry);
+                        } else if (Files.isDirectory(entry)) {
+                            subdirs.add(new RelativeDirectory(rd, name));
+                        }
+                    }
+                }
+            }
+            e = new Entry(Collections.unmodifiableMap(files),
+                    Collections.unmodifiableSet(subdirs),
+                    getCtInfo(rd));
+            entries.put(rd, new SoftReference<>(e));
+        }
+        return e;
+    }
+
+    public boolean isInJRT(FileObject fo) {
+        if (fo instanceof PathFileObject) {
+            Path path = ((PathFileObject) fo).getPath();
+            return (path.getFileSystem() == jrtfs);
+        } else {
+            return false;
+        }
+    }
+
+    private CtSym getCtInfo(RelativeDirectory dir) {
+        if (dir.path.isEmpty())
+            return CtSym.EMPTY;
+        // It's a side-effect of the default build rules that ct.properties
+        // ends up as a resource bundle.
+        if (ctBundle == null) {
+            final String bundleName = "com.sun.tools.javac.resources.ct";
+            ctBundle = ResourceBundle.getBundle(bundleName);
+        }
+        try {
+            String attrs = ctBundle.getString(dir.path.replace('/', '.') + '*');
+            boolean hidden = false;
+            boolean proprietary = false;
+            String minProfile = null;
+            for (String attr: attrs.split(" +", 0)) {
+                switch (attr) {
+                    case "hidden":
+                        hidden = true;
+                        break;
+                    case "proprietary":
+                        proprietary = true;
+                        break;
+                    default:
+                        minProfile = attr;
+                }
+            }
+            return new CtSym(hidden, proprietary, minProfile);
+        } catch (MissingResourceException e) {
+            return CtSym.EMPTY;
+        }
+
+    }
+
+    private ResourceBundle ctBundle;
+}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Wed Dec 03 14:25:46 2014 +0000
@@ -25,17 +25,16 @@
 
 package com.sun.tools.javac.file;
 
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.io.OutputStreamWriter;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.CharBuffer;
 import java.nio.charset.Charset;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -54,8 +53,9 @@
 import javax.tools.JavaFileObject;
 import javax.tools.StandardJavaFileManager;
 
+import com.sun.tools.javac.file.RelativePath.RelativeDirectory;
 import com.sun.tools.javac.file.RelativePath.RelativeFile;
-import com.sun.tools.javac.file.RelativePath.RelativeDirectory;
+import com.sun.tools.javac.nio.PathFileObject;
 import com.sun.tools.javac.util.BaseFileManager;
 import com.sun.tools.javac.util.Context;
 import com.sun.tools.javac.util.DefinedBy;
@@ -65,6 +65,8 @@
 
 import static javax.tools.StandardLocation.*;
 
+import static com.sun.tools.javac.util.BaseFileManager.getKind;
+
 /**
  * This class provides access to the source, class and other files
  * used by the compiler and related tools.
@@ -97,11 +99,13 @@
 
     protected enum SortFiles implements Comparator<File> {
         FORWARD {
+            @Override
             public int compare(File f1, File f2) {
                 return f1.getName().compareTo(f2.getName());
             }
         },
         REVERSE {
+            @Override
             public int compare(File f1, File f2) {
                 return -f1.getName().compareTo(f2.getName());
             }
@@ -115,6 +119,7 @@
      */
     public static void preRegister(Context context) {
         context.put(JavaFileManager.class, new Context.Factory<JavaFileManager>() {
+            @Override
             public JavaFileManager make(Context c) {
                 return new JavacFileManager(c, true, null);
             }
@@ -161,6 +166,10 @@
         symbolFileEnabled = b;
     }
 
+    public boolean isSymbolFileEnabled() {
+        return symbolFileEnabled;
+    }
+
     public JavaFileObject getFileForInput(String name) {
         return getRegularFile(new File(name));
     }
@@ -177,7 +186,7 @@
         return getJavaFileForOutput(CLASS_OUTPUT, classname, kind, sibling);
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
         ListBuffer<File> files = new ListBuffer<>();
         for (String name : names)
@@ -185,7 +194,7 @@
         return getJavaFileObjectsFromFiles(files.toList());
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
         return getJavaFileObjectsFromStrings(Arrays.asList(nullCheck(names)));
     }
@@ -250,6 +259,40 @@
         System.out.println(message);
     }
 
+    /**
+     * Insert all files in a subdirectory of the platform image
+     * which match fileKinds into resultList.
+     */
+    private void listJRTImage(RelativeDirectory subdirectory,
+                               Set<JavaFileObject.Kind> fileKinds,
+                               boolean recurse,
+                               ListBuffer<JavaFileObject> resultList) throws IOException {
+        JRTIndex.Entry e = getJRTIndex().getEntry(subdirectory);
+        if (symbolFileEnabled && e.ctSym.hidden)
+            return;
+        for (Path file: e.files.values()) {
+            if (fileKinds.contains(getKind(file))) {
+                JavaFileObject fe
+                        = PathFileObject.createJRTPathFileObject(JavacFileManager.this, file);
+                resultList.append(fe);
+            }
+        }
+
+        if (recurse) {
+            for (RelativeDirectory rd: e.subdirs) {
+                listJRTImage(rd, fileKinds, recurse, resultList);
+            }
+        }
+    }
+
+    private synchronized JRTIndex getJRTIndex() {
+        if (jrtIndex == null)
+            jrtIndex = JRTIndex.getSharedInstance();
+        return jrtIndex;
+    }
+
+    private JRTIndex jrtIndex;
+
 
     /**
      * Insert all files in subdirectory subdirectory of directory directory
@@ -334,7 +377,29 @@
                                ListBuffer<JavaFileObject> resultList) {
         Archive archive = archives.get(container);
         if (archive == null) {
-            // archives are not created for directories.
+            // Very temporary and obnoxious interim hack
+            if (container.getName().equals("bootmodules.jimage")) {
+                System.err.println("Warning: reference to bootmodules.jimage replaced by jrt:");
+                container = Locations.JRT_MARKER_FILE;
+            } else if (container.getName().endsWith(".jimage")) {
+                System.err.println("Warning: reference to " + container + " ignored");
+                return;
+            }
+
+            // archives are not created for directories or jrt: images
+            if (container == Locations.JRT_MARKER_FILE) {
+                try {
+                    listJRTImage(subdirectory,
+                            fileKinds,
+                            recurse,
+                            resultList);
+                } catch (IOException ex) {
+                    ex.printStackTrace(System.err);
+                    log.error("error.reading.file", container, getMessage(ex));
+                }
+                return;
+            }
+
             if  (fsInfo.isDirectory(container)) {
                 listDirectory(container,
                               subdirectory,
@@ -348,8 +413,7 @@
             try {
                 archive = openArchive(container);
             } catch (IOException ex) {
-                log.error("error.reading.file",
-                          container, getMessage(ex));
+                log.error("error.reading.file", container, getMessage(ex));
                 return;
             }
         }
@@ -419,21 +483,26 @@
         public MissingArchive(File name) {
             zipFileName = name;
         }
+        @Override
         public boolean contains(RelativePath name) {
             return false;
         }
 
+        @Override
         public void close() {
         }
 
+        @Override
         public JavaFileObject getFileObject(RelativeDirectory subdirectory, String file) {
             return null;
         }
 
+        @Override
         public List<String> getFiles(RelativeDirectory subdirectory) {
             return List.nil();
         }
 
+        @Override
         public Set<RelativeDirectory> getSubdirectories() {
             return Collections.emptySet();
         }
@@ -448,10 +517,6 @@
      */
     Map<File, Archive> archives = new HashMap<>();
 
-    private static final String[] symbolFileLocation = { "lib", "ct.sym" };
-    private static final RelativeDirectory symbolFilePrefix
-            = new RelativeDirectory("META-INF/sym/rt.jar/");
-
     /*
      * This method looks for a ZipFormatException and takes appropriate
      * evasive action. If there is a failure in the fast mode then we
@@ -473,19 +538,6 @@
     /** Open a new zip file directory, and cache it.
      */
     private Archive openArchive(File zipFileName, boolean useOptimizedZip) throws IOException {
-        File origZipFileName = zipFileName;
-        if (symbolFileEnabled && locations.isDefaultBootClassPathRtJar(zipFileName)) {
-            File file = zipFileName.getParentFile().getParentFile(); // ${java.home}
-            if (new File(file.getName()).equals(new File("jre")))
-                file = file.getParentFile();
-            // file == ${jdk.home}
-            for (String name : symbolFileLocation)
-                file = new File(file, name);
-            // file == ${jdk.home}/lib/ct.sym
-            if (file.exists())
-                zipFileName = file;
-        }
-
         Archive archive;
         try {
 
@@ -522,7 +574,6 @@
                 }
             }
 
-            if (origZipFileName == zipFileName) {
                 if (!useOptimizedZip) {
                     archive = new ZipArchive(this, zdir);
                 } else {
@@ -533,18 +584,6 @@
                                     preindexCacheLocation,
                                     options.isSet("writezipindexfiles")));
                 }
-            } else {
-                if (!useOptimizedZip) {
-                    archive = new SymbolArchive(this, origZipFileName, zdir, symbolFilePrefix);
-                } else {
-                    archive = new ZipFileIndexArchive(this,
-                                    zipFileIndexCache.getZipFileIndex(zipFileName,
-                                    symbolFilePrefix,
-                                    usePreindexedCache,
-                                    preindexCacheLocation,
-                                    options.isSet("writezipindexfiles")));
-                }
-            }
         } catch (FileNotFoundException ex) {
             archive = new MissingArchive(zipFileName);
         } catch (ZipFileIndex.ZipFormatException zfe) {
@@ -555,13 +594,13 @@
             archive = new MissingArchive(zipFileName);
         }
 
-        archives.put(origZipFileName, archive);
+        archives.put(zipFileName, archive);
         return archive;
     }
 
     /** Flush any output resources.
      */
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public void flush() {
         contentCache.clear();
     }
@@ -569,19 +608,19 @@
     /**
      * Close the JavaFileManager, releasing resources.
      */
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public void close() {
         for (Iterator<Archive> i = archives.values().iterator(); i.hasNext(); ) {
             Archive a = i.next();
             i.remove();
             try {
                 a.close();
-            } catch (IOException e) {
+            } catch (IOException ignore) {
             }
         }
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public ClassLoader getClassLoader(Location location) {
         nullCheck(location);
         Iterable<? extends File> path = getLocation(location);
@@ -599,7 +638,7 @@
         return getClassLoader(lb.toArray(new URL[lb.size()]));
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public Iterable<JavaFileObject> list(Location location,
                                          String packageName,
                                          Set<JavaFileObject.Kind> kinds,
@@ -621,7 +660,7 @@
         return results.toList();
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public String inferBinaryName(Location location, JavaFileObject file) {
         file.getClass(); // null check
         location.getClass(); // null check
@@ -633,27 +672,32 @@
 
         if (file instanceof BaseFileObject) {
             return ((BaseFileObject) file).inferBinaryName(path);
+        } else if (file instanceof PathFileObject) {
+            return ((PathFileObject) file).inferBinaryName(null);
         } else
             throw new IllegalArgumentException(file.getClass().getName());
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public boolean isSameFile(FileObject a, FileObject b) {
         nullCheck(a);
         nullCheck(b);
-        if (!(a instanceof BaseFileObject))
+        if (a instanceof PathFileObject && b instanceof PathFileObject)
+            return ((PathFileObject) a).isSameFile((PathFileObject) b);
+        // In time, we should phase out BaseFileObject in favor of PathFileObject
+        if (!(a instanceof BaseFileObject  || a instanceof PathFileObject))
             throw new IllegalArgumentException("Not supported: " + a);
-        if (!(b instanceof BaseFileObject))
+        if (!(b instanceof BaseFileObject || b instanceof PathFileObject))
             throw new IllegalArgumentException("Not supported: " + b);
         return a.equals(b);
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public boolean hasLocation(Location location) {
         return getLocation(location) != null;
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public JavaFileObject getJavaFileForInput(Location location,
                                               String className,
                                               JavaFileObject.Kind kind)
@@ -668,7 +712,7 @@
         return getFileForInput(location, RelativeFile.forClass(className, kind));
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public FileObject getFileForInput(Location location,
                                       String packageName,
                                       String relativeName)
@@ -690,17 +734,26 @@
         if (path == null)
             return null;
 
-        for (File dir: path) {
-            Archive a = archives.get(dir);
+        for (File file: path) {
+            Archive a = archives.get(file);
             if (a == null) {
-                if (fsInfo.isDirectory(dir)) {
-                    File f = name.getFile(dir);
+                // archives are not created for directories or jrt: images
+                if (file == Locations.JRT_MARKER_FILE) {
+                    JRTIndex.Entry e = getJRTIndex().getEntry(name.dirname());
+                    if (symbolFileEnabled && e.ctSym.hidden)
+                        continue;
+                    Path p = e.files.get(name.basename());
+                    if (p != null)
+                        return PathFileObject.createJRTPathFileObject(this, p);
+                    continue;
+                } else if (fsInfo.isDirectory(file)) {
+                    File f = name.getFile(file);
                     if (f.exists())
                         return new RegularFileObject(this, f);
                     continue;
                 }
                 // Not a directory, create the archive
-                a = openArchive(dir);
+                a = openArchive(file);
             }
             // Process the archive
             if (a.contains(name)) {
@@ -710,7 +763,7 @@
         return null;
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public JavaFileObject getJavaFileForOutput(Location location,
                                                String className,
                                                JavaFileObject.Kind kind,
@@ -726,7 +779,7 @@
         return getFileForOutput(location, RelativeFile.forClass(className, kind), sibling);
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public FileObject getFileForOutput(Location location,
                                        String packageName,
                                        String relativeName,
@@ -776,7 +829,7 @@
 
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(
         Iterable<? extends File> files)
     {
@@ -790,12 +843,12 @@
         return result;
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
         return getJavaFileObjectsFromFiles(Arrays.asList(nullCheck(files)));
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public void setLocation(Location location,
                             Iterable<? extends File> path)
         throws IOException
@@ -804,7 +857,7 @@
         locations.setLocation(location, path);
     }
 
-    @DefinedBy(Api.COMPILER)
+    @Override @DefinedBy(Api.COMPILER)
     public Iterable<? extends File> getLocation(Location location) {
         nullCheck(location);
         return locations.getLocation(location);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java	Wed Dec 03 14:25:46 2014 +0000
@@ -27,8 +27,12 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.UncheckedIOException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -41,6 +45,8 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.StringTokenizer;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import java.util.zip.ZipFile;
 
 import javax.tools.JavaFileManager;
@@ -94,6 +100,12 @@
      */
     private boolean warn;
 
+    // Used by Locations(for now) to indicate that the PLATFORM_CLASS_PATH
+    // should use the jrt: file system.
+    // When Locations has been converted to use java.nio.file.Path,
+    // Locations can use Paths.get(URI.create("jrt:"))
+    static final File JRT_MARKER_FILE = new File("JRT_MARKER_FILE");
+
     public Locations() {
         initHandlers();
     }
@@ -115,12 +127,6 @@
         return h.isDefault();
     }
 
-    boolean isDefaultBootClassPathRtJar(File file) {
-        BootClassPathLocationHandler h
-                = (BootClassPathLocationHandler) getHandler(PLATFORM_CLASS_PATH);
-        return h.isDefaultRtJar(file);
-    }
-
     public Collection<File> userClassPath() {
         return getLocation(CLASS_PATH);
     }
@@ -283,7 +289,7 @@
 
             if (fsInfo.isFile(file)) {
                 /* File is an ordinary file. */
-                if (!isArchive(file)) {
+                if (!isArchive(file) && !file.getName().endsWith(".jimage")) {
                     /* Not a recognized extension; open it to see if
                      it looks like a valid zip file. */
                     try {
@@ -309,7 +315,7 @@
             super.add(file);
             canonicalValues.add(canonFile);
 
-            if (expandJarClassPaths && fsInfo.isFile(file)) {
+            if (expandJarClassPaths && fsInfo.isFile(file) && !file.getName().endsWith(".jimage")) {
                 addJarClassPath(file, warn);
             }
         }
@@ -543,15 +549,9 @@
         final Map<Option, String> optionValues = new EnumMap<>(Option.class);
 
         /**
-         * rt.jar as found on the default bootclasspath. If the user specified a bootclasspath, null
-         * is used.
+         * Is the bootclasspath the default?
          */
-        private File defaultBootClassPathRtJar = null;
-
-        /**
-         * Is bootclasspath the default?
-         */
-        private boolean isDefaultBootClassPath;
+        private boolean isDefault;
 
         BootClassPathLocationHandler() {
             super(StandardLocation.PLATFORM_CLASS_PATH,
@@ -564,12 +564,7 @@
 
         boolean isDefault() {
             lazy();
-            return isDefaultBootClassPath;
-        }
-
-        boolean isDefaultRtJar(File file) {
-            lazy();
-            return file.equals(defaultBootClassPathRtJar);
+            return isDefault;
         }
 
         @Override
@@ -614,16 +609,16 @@
             if (files == null) {
                 searchPath = null;  // reset to "uninitialized"
             } else {
-                defaultBootClassPathRtJar = null;
-                isDefaultBootClassPath = false;
+                isDefault = false;
                 SearchPath p = new SearchPath().addFiles(files, false);
                 searchPath = Collections.unmodifiableCollection(p);
                 optionValues.clear();
             }
         }
 
-        SearchPath computePath() {
-            defaultBootClassPathRtJar = null;
+        SearchPath computePath() throws IOException {
+            String java_home = System.getProperty("java.home");
+
             SearchPath path = new SearchPath();
 
             String bootclasspathOpt = optionValues.get(BOOTCLASSPATH);
@@ -643,13 +638,13 @@
                 path.addFiles(bootclasspathOpt);
             } else {
                 // Standard system classes for this compiler's release.
-                String files = System.getProperty("sun.boot.class.path");
-                path.addFiles(files, false);
-                File rt_jar = new File("rt.jar");
-                for (File file : getPathEntries(files)) {
-                    if (new File(file.getName()).equals(rt_jar)) {
-                        defaultBootClassPathRtJar = file;
-                    }
+                Collection<File> systemClasses = systemClasses(java_home);
+                if (systemClasses != null) {
+                    path.addFiles(systemClasses, false);
+                } else {
+                    // fallback to the value of sun.boot.class.path
+                    String files = System.getProperty("sun.boot.class.path");
+                    path.addFiles(files, false);
                 }
             }
 
@@ -661,20 +656,69 @@
             if (extdirsOpt != null) {
                 path.addDirectories(extdirsOpt);
             } else {
+                // Add lib/jfxrt.jar to the search path
+                File jfxrt = new File(new File(java_home, "lib"), "jfxrt.jar");
+                if (jfxrt.exists()) {
+                    path.addFile(jfxrt, false);
+                }
                 path.addDirectories(System.getProperty("java.ext.dirs"), false);
             }
 
-            isDefaultBootClassPath
-                    = (xbootclasspathPrependOpt == null)
+            isDefault =
+                       (xbootclasspathPrependOpt == null)
                     && (bootclasspathOpt == null)
                     && (xbootclasspathAppendOpt == null);
 
             return path;
         }
 
+        /**
+         * Return a collection of files containing system classes.
+         * Returns {@code null} if not running on a modular image.
+         *
+         * @throws UncheckedIOException if an I/O errors occurs
+         */
+        private Collection<File> systemClasses(String java_home) throws IOException {
+            // Return .jimage files if available
+            Path libModules = Paths.get(java_home, "lib", "modules");
+            if (Files.exists(libModules)) {
+                try (Stream<Path> files = Files.list(libModules)) {
+                    boolean haveJImageFiles =
+                            files.anyMatch(f -> f.getFileName().toString().endsWith(".jimage"));
+                    if (haveJImageFiles) {
+                        return Collections.singleton(JRT_MARKER_FILE);
+                    }
+                }
+            }
+
+            // Temporary: if no .jimage files, return individual modules
+            if (Files.exists(libModules.resolve("java.base"))) {
+                return Files.list(libModules)
+                            .map(d -> d.resolve("classes"))
+                            .map(Path::toFile)
+                            .collect(Collectors.toList());
+            }
+
+            // Exploded module image
+            Path modules = Paths.get(java_home, "modules");
+            if (Files.isDirectory(modules.resolve("java.base"))) {
+                return Files.list(modules)
+                            .map(Path::toFile)
+                            .collect(Collectors.toList());
+            }
+
+            // not a modular image that we know about
+            return null;
+        }
+
         private void lazy() {
             if (searchPath == null) {
+                try {
                 searchPath = Collections.unmodifiableCollection(computePath());
+                } catch (IOException e) {
+                    // TODO: need better handling here, e.g. javac Abort?
+                    throw new UncheckedIOException(e);
+                }
             }
         }
     }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/RelativePath.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/RelativePath.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,8 +26,13 @@
 package com.sun.tools.javac.file;
 
 import java.io.File;
+import java.nio.file.FileSystems;
+import java.nio.file.InvalidPathException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
+
 import javax.tools.JavaFileObject;
 
 /**
@@ -58,6 +63,16 @@
         return new File(directory, path.replace('/', File.separatorChar));
     }
 
+    public Path getFile(Path directory) throws /*unchecked*/ InvalidPathException {
+        if (directory == null) {
+            String sep = FileSystems.getDefault().getSeparator();
+            return Paths.get(path.replace("/", sep));
+        } else {
+            String sep = directory.getFileSystem().getSeparator();
+            return directory.resolve(path.replace("/", sep));
+        }
+    }
+
     public int compareTo(RelativePath other) {
         return path.compareTo(other.path);
     }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/SymbolArchive.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javac.file;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import javax.tools.JavaFileObject;
-
-import com.sun.tools.javac.file.RelativePath.RelativeDirectory;
-import com.sun.tools.javac.file.RelativePath.RelativeFile;
-import com.sun.tools.javac.util.List;
-
-/**
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
-*/
-public class SymbolArchive extends ZipArchive {
-
-    final File origFile;
-    final RelativeDirectory prefix;
-
-    public SymbolArchive(JavacFileManager fileManager, File orig, ZipFile zdir, RelativeDirectory prefix) throws IOException {
-        super(fileManager, zdir, false);
-        this.origFile = orig;
-        this.prefix = prefix;
-        initMap();
-    }
-
-    @Override
-    void addZipEntry(ZipEntry entry) {
-        String name = entry.getName();
-        if (!name.startsWith(prefix.path)) {
-            return;
-        }
-        name = name.substring(prefix.path.length());
-        int i = name.lastIndexOf('/');
-        RelativeDirectory dirname = new RelativeDirectory(name.substring(0, i+1));
-        String basename = name.substring(i + 1);
-        if (basename.length() == 0) {
-            return;
-        }
-        List<String> list = map.get(dirname);
-        if (list == null)
-            list = List.nil();
-        list = list.prepend(basename);
-        map.put(dirname, list);
-    }
-
-    @Override
-    public JavaFileObject getFileObject(RelativeDirectory subdirectory, String file) {
-        RelativeDirectory prefix_subdir = new RelativeDirectory(prefix, subdirectory.path);
-        ZipEntry ze = new RelativeFile(prefix_subdir, file).getZipEntry(zfile);
-        return new SymbolFileObject(this, file, ze);
-    }
-
-    @Override
-    public String toString() {
-        return "SymbolArchive[" + zfile.getName() + "]";
-    }
-
-    /**
-     * A subclass of JavaFileObject representing zip entries in a symbol file.
-     */
-    public static class SymbolFileObject extends ZipFileObject {
-        protected SymbolFileObject(SymbolArchive zarch, String name, ZipEntry entry) {
-            super(zarch, name, entry);
-        }
-
-        @Override
-        protected String inferBinaryName(Iterable<? extends File> path) {
-            String entryName = entry.getName();
-            String prefix = ((SymbolArchive) zarch).prefix.path;
-            if (entryName.startsWith(prefix))
-                entryName = entryName.substring(prefix.length());
-            return removeExtension(entryName).replace('/', '.');
-        }
-    }
-
-
-}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1299,21 +1299,7 @@
             ListBuffer<CompoundAnnotationProxy> proxies = new ListBuffer<>();
             for (int i = 0; i<numAttributes; i++) {
                 CompoundAnnotationProxy proxy = readCompoundAnnotation();
-                if (proxy.type.tsym == syms.proprietaryType.tsym)
-                    sym.flags_field |= PROPRIETARY;
-                else if (proxy.type.tsym == syms.profileType.tsym) {
-                    if (profile != Profile.DEFAULT) {
-                        for (Pair<Name,Attribute> v: proxy.values) {
-                            if (v.fst == names.value && v.snd instanceof Attribute.Constant) {
-                                Attribute.Constant c = (Attribute.Constant) v.snd;
-                                if (c.type == syms.intType && ((Integer) c.value) > profile.value) {
-                                    sym.flags_field |= NOT_IN_PROFILE;
-                                }
-                            }
-                        }
-                    }
-                } else
-                    proxies.append(proxy);
+                proxies.append(proxy);
             }
             annotate.normal(new AnnotationCompleter(sym, proxies.toList()));
         }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/nio/JavacPathFileManager.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/nio/JavacPathFileManager.java	Wed Dec 03 14:25:46 2014 +0000
@@ -368,7 +368,7 @@
             @Override
             public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
                 Path name = dir.getFileName();
-                if (name == null || SourceVersion.isIdentifier(name.toString())) // JSR 292?
+                if (name == null || SourceVersion.isIdentifier(name.toString()))
                     return FileVisitResult.CONTINUE;
                 else
                     return FileVisitResult.SKIP_SUBTREE;
@@ -377,6 +377,9 @@
             @Override
             public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
                 if (attrs.isRegularFile() && kinds.contains(getKind(file.getFileName().toString()))) {
+                    // WORKAROUND for .jimage files
+                    if (!file.isAbsolute())
+                        file = pathDir.resolve(file);
                     JavaFileObject fe =
                         PathFileObject.createDirectoryPathFileObject(
                             JavacPathFileManager.this, file, pathDir);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/nio/PathFileObject.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/nio/PathFileObject.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -62,19 +62,19 @@
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
-abstract class PathFileObject implements JavaFileObject {
-    private JavacPathFileManager fileManager;
-    private Path path;
+public abstract class PathFileObject implements JavaFileObject {
+    private final BaseFileManager fileManager;
+    private final Path path;
 
     /**
      * Create a PathFileObject within a directory, such that the binary name
      * can be inferred from the relationship to the parent directory.
      */
-    static PathFileObject createDirectoryPathFileObject(JavacPathFileManager fileManager,
+    static PathFileObject createDirectoryPathFileObject(BaseFileManager fileManager,
             final Path path, final Path dir) {
         return new PathFileObject(fileManager, path) {
             @Override
-            String inferBinaryName(Iterable<? extends Path> paths) {
+            public String inferBinaryName(Iterable<? extends Path> paths) {
                 return toBinaryName(dir.relativize(path));
             }
         };
@@ -84,25 +84,40 @@
      * Create a PathFileObject in a file system such as a jar file, such that
      * the binary name can be inferred from its position within the filesystem.
      */
-    static PathFileObject createJarPathFileObject(JavacPathFileManager fileManager,
+    public static PathFileObject createJarPathFileObject(BaseFileManager fileManager,
             final Path path) {
         return new PathFileObject(fileManager, path) {
             @Override
-            String inferBinaryName(Iterable<? extends Path> paths) {
+            public String inferBinaryName(Iterable<? extends Path> paths) {
                 return toBinaryName(path);
             }
         };
     }
 
     /**
+     * Create a PathFileObject in a modular file system, such as jrt:, such that
+     * the binary name can be inferred from its position within the filesystem.
+     */
+    public static PathFileObject createJRTPathFileObject(BaseFileManager fileManager,
+            final Path path) {
+        return new PathFileObject(fileManager, path) {
+            @Override
+            public String inferBinaryName(Iterable<? extends Path> paths) {
+                // use subpath to ignore the leading component containing the module name
+                return toBinaryName(path.subpath(1, path.getNameCount()));
+            }
+        };
+    }
+
+    /**
      * Create a PathFileObject whose binary name can be inferred from the
      * relative path to a sibling.
      */
-    static PathFileObject createSiblingPathFileObject(JavacPathFileManager fileManager,
+    static PathFileObject createSiblingPathFileObject(BaseFileManager fileManager,
             final Path path, final String relativePath) {
         return new PathFileObject(fileManager, path) {
             @Override
-            String inferBinaryName(Iterable<? extends Path> paths) {
+            public String inferBinaryName(Iterable<? extends Path> paths) {
                 return toBinaryName(relativePath, "/");
             }
         };
@@ -112,11 +127,11 @@
      * Create a PathFileObject whose binary name might be inferred from its
      * position on a search path.
      */
-    static PathFileObject createSimplePathFileObject(JavacPathFileManager fileManager,
+    static PathFileObject createSimplePathFileObject(BaseFileManager fileManager,
             final Path path) {
         return new PathFileObject(fileManager, path) {
             @Override
-            String inferBinaryName(Iterable<? extends Path> paths) {
+            public String inferBinaryName(Iterable<? extends Path> paths) {
                 Path absPath = path.toAbsolutePath();
                 for (Path p: paths) {
                     Path ap = p.toAbsolutePath();
@@ -135,20 +150,20 @@
         };
     }
 
-    protected PathFileObject(JavacPathFileManager fileManager, Path path) {
+    protected PathFileObject(BaseFileManager fileManager, Path path) {
         fileManager.getClass(); // null check
         path.getClass();        // null check
         this.fileManager = fileManager;
         this.path = path;
     }
 
-    abstract String inferBinaryName(Iterable<? extends Path> paths);
+    public abstract String inferBinaryName(Iterable<? extends Path> paths);
 
     /**
      * Return the Path for this object.
      * @return the Path for this object.
      */
-    Path getPath() {
+    public Path getPath() {
         return path;
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/ct.properties	Wed Dec 03 14:25:46 2014 +0000
@@ -0,0 +1,749 @@
+apple.applescript.*: hidden
+apple.laf.*: hidden
+apple.security.*: hidden
+com.apple.concurrent.*: hidden
+com.apple.eawt.*: hidden
+com.apple.eawt.event.*: hidden
+com.apple.eio.*: hidden
+com.apple.laf.*: hidden
+com.oracle.webservices.internal.api.*: hidden
+com.oracle.webservices.internal.api.databinding.*: hidden
+com.oracle.webservices.internal.api.message.*: hidden
+com.oracle.webservices.internal.impl.encoding.*: hidden
+com.oracle.webservices.internal.impl.internalspi.encoding.*: hidden
+com.oracle.xmlns.internal.webservices.jaxws_databinding.*: hidden
+com.sun.accessibility.internal.resources.*: proprietary
+com.sun.activation.registries.*: hidden
+com.sun.awt.*: proprietary
+com.sun.beans.*: proprietary
+com.sun.beans.decoder.*: hidden
+com.sun.beans.editors.*: hidden
+com.sun.beans.finder.*: hidden
+com.sun.beans.infos.*: hidden
+com.sun.beans.introspect.*: hidden
+com.sun.beans.util.*: hidden
+com.sun.corba.se.impl.activation.*: proprietary
+com.sun.corba.se.impl.copyobject.*: proprietary
+com.sun.corba.se.impl.corba.*: proprietary
+com.sun.corba.se.impl.dynamicany.*: proprietary
+com.sun.corba.se.impl.encoding.*: proprietary
+com.sun.corba.se.impl.interceptors.*: proprietary
+com.sun.corba.se.impl.io.*: proprietary
+com.sun.corba.se.impl.ior.*: proprietary
+com.sun.corba.se.impl.ior.iiop.*: proprietary
+com.sun.corba.se.impl.javax.rmi.*: proprietary
+com.sun.corba.se.impl.javax.rmi.CORBA.*: proprietary
+com.sun.corba.se.impl.legacy.connection.*: proprietary
+com.sun.corba.se.impl.logging.*: proprietary
+com.sun.corba.se.impl.monitoring.*: proprietary
+com.sun.corba.se.impl.naming.cosnaming.*: proprietary
+com.sun.corba.se.impl.naming.namingutil.*: proprietary
+com.sun.corba.se.impl.naming.pcosnaming.*: proprietary
+com.sun.corba.se.impl.oa.*: proprietary
+com.sun.corba.se.impl.oa.poa.*: proprietary
+com.sun.corba.se.impl.oa.toa.*: proprietary
+com.sun.corba.se.impl.orb.*: proprietary
+com.sun.corba.se.impl.orbutil.*: proprietary
+com.sun.corba.se.impl.orbutil.closure.*: proprietary
+com.sun.corba.se.impl.orbutil.concurrent.*: proprietary
+com.sun.corba.se.impl.orbutil.fsm.*: proprietary
+com.sun.corba.se.impl.orbutil.graph.*: proprietary
+com.sun.corba.se.impl.orbutil.threadpool.*: proprietary
+com.sun.corba.se.impl.presentation.rmi.*: proprietary
+com.sun.corba.se.impl.protocol.*: proprietary
+com.sun.corba.se.impl.protocol.giopmsgheaders.*: proprietary
+com.sun.corba.se.impl.resolver.*: proprietary
+com.sun.corba.se.impl.transport.*: proprietary
+com.sun.corba.se.impl.util.*: proprietary
+com.sun.corba.se.internal.CosNaming.*: proprietary
+com.sun.corba.se.internal.Interceptors.*: proprietary
+com.sun.corba.se.internal.POA.*: proprietary
+com.sun.corba.se.internal.corba.*: proprietary
+com.sun.corba.se.internal.iiop.*: proprietary
+com.sun.corba.se.org.omg.CORBA.*: proprietary
+com.sun.corba.se.pept.broker.*: proprietary
+com.sun.corba.se.pept.encoding.*: proprietary
+com.sun.corba.se.pept.protocol.*: proprietary
+com.sun.corba.se.pept.transport.*: proprietary
+com.sun.corba.se.spi.activation.*: proprietary
+com.sun.corba.se.spi.activation.InitialNameServicePackage.*: proprietary
+com.sun.corba.se.spi.activation.LocatorPackage.*: proprietary
+com.sun.corba.se.spi.activation.RepositoryPackage.*: proprietary
+com.sun.corba.se.spi.copyobject.*: proprietary
+com.sun.corba.se.spi.encoding.*: proprietary
+com.sun.corba.se.spi.extension.*: proprietary
+com.sun.corba.se.spi.ior.*: proprietary
+com.sun.corba.se.spi.ior.iiop.*: proprietary
+com.sun.corba.se.spi.legacy.connection.*: proprietary
+com.sun.corba.se.spi.legacy.interceptor.*: proprietary
+com.sun.corba.se.spi.logging.*: proprietary
+com.sun.corba.se.spi.monitoring.*: proprietary
+com.sun.corba.se.spi.oa.*: proprietary
+com.sun.corba.se.spi.orb.*: proprietary
+com.sun.corba.se.spi.orbutil.closure.*: proprietary
+com.sun.corba.se.spi.orbutil.fsm.*: proprietary
+com.sun.corba.se.spi.orbutil.proxy.*: proprietary
+com.sun.corba.se.spi.orbutil.threadpool.*: proprietary
+com.sun.corba.se.spi.presentation.rmi.*: proprietary
+com.sun.corba.se.spi.protocol.*: proprietary
+com.sun.corba.se.spi.resolver.*: proprietary
+com.sun.corba.se.spi.servicecontext.*: proprietary
+com.sun.corba.se.spi.transport.*: proprietary
+com.sun.demo.jvmti.hprof.*: hidden
+com.sun.imageio.plugins.bmp.*: proprietary
+com.sun.imageio.plugins.common.*: proprietary
+com.sun.imageio.plugins.gif.*: proprietary
+com.sun.imageio.plugins.jpeg.*: proprietary
+com.sun.imageio.plugins.png.*: proprietary
+com.sun.imageio.plugins.wbmp.*: proprietary
+com.sun.imageio.spi.*: proprietary
+com.sun.imageio.stream.*: hidden
+com.sun.istack.internal.*: hidden
+com.sun.istack.internal.localization.*: hidden
+com.sun.istack.internal.logging.*: hidden
+com.sun.java.swing.*: proprietary
+com.sun.java.swing.plaf.gtk.resources.*: proprietary
+com.sun.java.swing.plaf.motif.resources.*: proprietary
+com.sun.java.swing.plaf.nimbus.*: proprietary
+com.sun.java.swing.plaf.windows.resources.*: proprietary
+com.sun.java.util.jar.pack.*: proprietary compact1
+com.sun.java_cup.internal.runtime.*: proprietary compact2
+com.sun.jmx.defaults.*: proprietary compact3
+com.sun.jmx.interceptor.*: proprietary compact3
+com.sun.jmx.mbeanserver.*: proprietary compact3
+com.sun.jmx.remote.internal.*: proprietary compact3
+com.sun.jmx.remote.protocol.rmi.*: proprietary compact3
+com.sun.jmx.remote.security.*: proprietary compact3
+com.sun.jmx.remote.util.*: proprietary compact3
+com.sun.jndi.cosnaming.*: proprietary
+com.sun.jndi.dns.*: proprietary compact3
+com.sun.jndi.ldap.*: proprietary compact3
+com.sun.jndi.ldap.ext.*: proprietary compact3
+com.sun.jndi.ldap.pool.*: proprietary compact3
+com.sun.jndi.ldap.sasl.*: proprietary compact3
+com.sun.jndi.rmi.registry.*: proprietary compact3
+com.sun.jndi.toolkit.corba.*: proprietary
+com.sun.jndi.toolkit.ctx.*: proprietary compact3
+com.sun.jndi.toolkit.dir.*: proprietary compact3
+com.sun.jndi.toolkit.url.*: proprietary compact3
+com.sun.jndi.url.corbaname.*: proprietary
+com.sun.jndi.url.dns.*: proprietary compact3
+com.sun.jndi.url.iiop.*: proprietary
+com.sun.jndi.url.iiopname.*: proprietary
+com.sun.jndi.url.ldap.*: proprietary compact3
+com.sun.jndi.url.ldaps.*: proprietary compact3
+com.sun.jndi.url.rmi.*: proprietary compact3
+com.sun.management.*: compact3
+com.sun.media.sound.*: proprietary
+com.sun.naming.internal.*: proprietary compact3
+com.sun.net.httpserver.*: compact2
+com.sun.net.httpserver.spi.*: compact2
+com.sun.net.ssl.*: compact1
+com.sun.net.ssl.internal.www.protocol.https.*: proprietary compact1
+com.sun.nio.file.*: compact1
+com.sun.nio.sctp.*: compact3
+com.sun.org.apache.bcel.internal.*: proprietary compact2
+com.sun.org.apache.bcel.internal.classfile.*: proprietary compact2
+com.sun.org.apache.bcel.internal.generic.*: proprietary compact2
+com.sun.org.apache.bcel.internal.util.*: proprietary compact2
+com.sun.org.apache.regexp.internal.*: proprietary compact2
+com.sun.org.apache.xalan.internal.*: proprietary compact2
+com.sun.org.apache.xalan.internal.extensions.*: proprietary compact2
+com.sun.org.apache.xalan.internal.lib.*: proprietary compact2
+com.sun.org.apache.xalan.internal.res.*: proprietary compact2
+com.sun.org.apache.xalan.internal.templates.*: proprietary compact2
+com.sun.org.apache.xalan.internal.utils.*: hidden
+com.sun.org.apache.xalan.internal.xslt.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.cmdline.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.cmdline.getopt.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.compiler.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.compiler.util.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.dom.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.runtime.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.runtime.output.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.trax.*: proprietary compact2
+com.sun.org.apache.xalan.internal.xsltc.util.*: proprietary compact2
+com.sun.org.apache.xerces.internal.dom.*: proprietary compact2
+com.sun.org.apache.xerces.internal.dom.events.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.dtd.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.dtd.models.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.dv.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.dv.dtd.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.dv.util.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.dv.xs.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.io.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.msg.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.validation.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.xpath.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.xpath.regex.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.xs.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.xs.identity.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.xs.models.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.xs.opti.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.xs.traversers.*: proprietary compact2
+com.sun.org.apache.xerces.internal.impl.xs.util.*: proprietary compact2
+com.sun.org.apache.xerces.internal.jaxp.*: proprietary compact2
+com.sun.org.apache.xerces.internal.jaxp.datatype.*: proprietary compact2
+com.sun.org.apache.xerces.internal.jaxp.validation.*: proprietary compact2
+com.sun.org.apache.xerces.internal.parsers.*: proprietary compact2
+com.sun.org.apache.xerces.internal.util.*: proprietary compact2
+com.sun.org.apache.xerces.internal.utils.*: hidden
+com.sun.org.apache.xerces.internal.xinclude.*: proprietary compact2
+com.sun.org.apache.xerces.internal.xni.*: proprietary compact2
+com.sun.org.apache.xerces.internal.xni.grammars.*: proprietary compact2
+com.sun.org.apache.xerces.internal.xni.parser.*: proprietary compact2
+com.sun.org.apache.xerces.internal.xpointer.*: hidden
+com.sun.org.apache.xerces.internal.xs.*: proprietary compact2
+com.sun.org.apache.xerces.internal.xs.datatypes.*: hidden
+com.sun.org.apache.xml.internal.dtm.*: proprietary compact2
+com.sun.org.apache.xml.internal.dtm.ref.*: proprietary compact2
+com.sun.org.apache.xml.internal.dtm.ref.dom2dtm.*: proprietary compact2
+com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.*: proprietary compact2
+com.sun.org.apache.xml.internal.res.*: proprietary compact2
+com.sun.org.apache.xml.internal.resolver.*: hidden
+com.sun.org.apache.xml.internal.resolver.helpers.*: hidden
+com.sun.org.apache.xml.internal.resolver.readers.*: hidden
+com.sun.org.apache.xml.internal.resolver.tools.*: hidden
+com.sun.org.apache.xml.internal.security.*: hidden
+com.sun.org.apache.xml.internal.security.algorithms.*: hidden
+com.sun.org.apache.xml.internal.security.algorithms.implementations.*: hidden
+com.sun.org.apache.xml.internal.security.c14n.*: hidden
+com.sun.org.apache.xml.internal.security.c14n.helper.*: hidden
+com.sun.org.apache.xml.internal.security.c14n.implementations.*: hidden
+com.sun.org.apache.xml.internal.security.encryption.*: hidden
+com.sun.org.apache.xml.internal.security.exceptions.*: hidden
+com.sun.org.apache.xml.internal.security.keys.*: hidden
+com.sun.org.apache.xml.internal.security.keys.content.*: hidden
+com.sun.org.apache.xml.internal.security.keys.content.keyvalues.*: hidden
+com.sun.org.apache.xml.internal.security.keys.content.x509.*: hidden
+com.sun.org.apache.xml.internal.security.keys.keyresolver.*: hidden
+com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.*: hidden
+com.sun.org.apache.xml.internal.security.keys.storage.*: hidden
+com.sun.org.apache.xml.internal.security.keys.storage.implementations.*: hidden
+com.sun.org.apache.xml.internal.security.signature.*: hidden
+com.sun.org.apache.xml.internal.security.signature.reference.*: hidden
+com.sun.org.apache.xml.internal.security.transforms.*: hidden
+com.sun.org.apache.xml.internal.security.transforms.implementations.*: hidden
+com.sun.org.apache.xml.internal.security.transforms.params.*: hidden
+com.sun.org.apache.xml.internal.security.utils.*: hidden
+com.sun.org.apache.xml.internal.security.utils.resolver.*: hidden
+com.sun.org.apache.xml.internal.security.utils.resolver.implementations.*: hidden
+com.sun.org.apache.xml.internal.serialize.*: proprietary compact2
+com.sun.org.apache.xml.internal.serializer.*: proprietary compact2
+com.sun.org.apache.xml.internal.serializer.dom3.*: hidden
+com.sun.org.apache.xml.internal.serializer.utils.*: hidden
+com.sun.org.apache.xml.internal.utils.*: proprietary compact2
+com.sun.org.apache.xml.internal.utils.res.*: proprietary compact2
+com.sun.org.apache.xpath.internal.*: proprietary compact2
+com.sun.org.apache.xpath.internal.axes.*: proprietary compact2
+com.sun.org.apache.xpath.internal.compiler.*: proprietary compact2
+com.sun.org.apache.xpath.internal.domapi.*: hidden
+com.sun.org.apache.xpath.internal.functions.*: proprietary compact2
+com.sun.org.apache.xpath.internal.jaxp.*: proprietary compact2
+com.sun.org.apache.xpath.internal.objects.*: proprietary compact2
+com.sun.org.apache.xpath.internal.operations.*: proprietary compact2
+com.sun.org.apache.xpath.internal.patterns.*: proprietary compact2
+com.sun.org.apache.xpath.internal.res.*: proprietary compact2
+com.sun.org.glassfish.external.amx.*: hidden
+com.sun.org.glassfish.external.arc.*: hidden
+com.sun.org.glassfish.external.probe.provider.*: hidden
+com.sun.org.glassfish.external.probe.provider.annotations.*: hidden
+com.sun.org.glassfish.external.statistics.*: hidden
+com.sun.org.glassfish.external.statistics.annotations.*: hidden
+com.sun.org.glassfish.external.statistics.impl.*: hidden
+com.sun.org.glassfish.gmbal.*: hidden
+com.sun.org.glassfish.gmbal.util.*: hidden
+com.sun.org.omg.CORBA.*: proprietary
+com.sun.org.omg.CORBA.ValueDefPackage.*: proprietary
+com.sun.org.omg.CORBA.portable.*: proprietary
+com.sun.org.omg.SendingContext.*: proprietary
+com.sun.org.omg.SendingContext.CodeBasePackage.*: proprietary
+com.sun.rmi.rmid.*: proprietary compact2
+com.sun.rowset.*: proprietary compact3
+com.sun.rowset.internal.*: proprietary compact3
+com.sun.rowset.providers.*: proprietary compact3
+com.sun.security.auth.*: compact3
+com.sun.security.auth.callback.*: compact3
+com.sun.security.auth.login.*: compact3
+com.sun.security.auth.module.*: compact3
+com.sun.security.cert.internal.x509.*: proprietary compact1
+com.sun.security.jgss.*: compact3
+com.sun.security.ntlm.*: hidden
+com.sun.security.sasl.*: proprietary compact3
+com.sun.security.sasl.digest.*: proprietary compact3
+com.sun.security.sasl.gsskerb.*: proprietary compact3
+com.sun.security.sasl.ntlm.*: hidden
+com.sun.security.sasl.util.*: proprietary compact3
+com.sun.swing.internal.plaf.basic.resources.*: proprietary
+com.sun.swing.internal.plaf.metal.resources.*: proprietary
+com.sun.swing.internal.plaf.synth.resources.*: proprietary
+com.sun.tracing.*: proprietary compact3
+com.sun.tracing.dtrace.*: proprietary compact3
+com.sun.xml.internal.bind.*: hidden
+com.sun.xml.internal.bind.annotation.*: hidden
+com.sun.xml.internal.bind.api.*: hidden
+com.sun.xml.internal.bind.api.impl.*: hidden
+com.sun.xml.internal.bind.marshaller.*: hidden
+com.sun.xml.internal.bind.unmarshaller.*: hidden
+com.sun.xml.internal.bind.util.*: hidden
+com.sun.xml.internal.bind.v2.*: hidden
+com.sun.xml.internal.bind.v2.bytecode.*: hidden
+com.sun.xml.internal.bind.v2.model.annotation.*: hidden
+com.sun.xml.internal.bind.v2.model.core.*: hidden
+com.sun.xml.internal.bind.v2.model.impl.*: hidden
+com.sun.xml.internal.bind.v2.model.nav.*: hidden
+com.sun.xml.internal.bind.v2.model.runtime.*: hidden
+com.sun.xml.internal.bind.v2.model.util.*: hidden
+com.sun.xml.internal.bind.v2.runtime.*: hidden
+com.sun.xml.internal.bind.v2.runtime.output.*: hidden
+com.sun.xml.internal.bind.v2.runtime.property.*: hidden
+com.sun.xml.internal.bind.v2.runtime.reflect.*: hidden
+com.sun.xml.internal.bind.v2.runtime.reflect.opt.*: hidden
+com.sun.xml.internal.bind.v2.runtime.unmarshaller.*: hidden
+com.sun.xml.internal.bind.v2.schemagen.*: hidden
+com.sun.xml.internal.bind.v2.schemagen.episode.*: hidden
+com.sun.xml.internal.bind.v2.schemagen.xmlschema.*: hidden
+com.sun.xml.internal.bind.v2.util.*: hidden
+com.sun.xml.internal.fastinfoset.*: hidden
+com.sun.xml.internal.fastinfoset.algorithm.*: hidden
+com.sun.xml.internal.fastinfoset.alphabet.*: hidden
+com.sun.xml.internal.fastinfoset.dom.*: hidden
+com.sun.xml.internal.fastinfoset.org.apache.xerces.util.*: hidden
+com.sun.xml.internal.fastinfoset.sax.*: hidden
+com.sun.xml.internal.fastinfoset.stax.*: hidden
+com.sun.xml.internal.fastinfoset.stax.events.*: hidden
+com.sun.xml.internal.fastinfoset.stax.factory.*: hidden
+com.sun.xml.internal.fastinfoset.stax.util.*: hidden
+com.sun.xml.internal.fastinfoset.tools.*: hidden
+com.sun.xml.internal.fastinfoset.util.*: hidden
+com.sun.xml.internal.fastinfoset.vocab.*: hidden
+com.sun.xml.internal.messaging.saaj.*: hidden
+com.sun.xml.internal.messaging.saaj.client.p2p.*: hidden
+com.sun.xml.internal.messaging.saaj.packaging.mime.*: hidden
+com.sun.xml.internal.messaging.saaj.packaging.mime.internet.*: hidden
+com.sun.xml.internal.messaging.saaj.packaging.mime.util.*: hidden
+com.sun.xml.internal.messaging.saaj.soap.*: hidden
+com.sun.xml.internal.messaging.saaj.soap.dynamic.*: hidden
+com.sun.xml.internal.messaging.saaj.soap.impl.*: hidden
+com.sun.xml.internal.messaging.saaj.soap.name.*: hidden
+com.sun.xml.internal.messaging.saaj.soap.ver1_1.*: hidden
+com.sun.xml.internal.messaging.saaj.soap.ver1_2.*: hidden
+com.sun.xml.internal.messaging.saaj.util.*: hidden
+com.sun.xml.internal.messaging.saaj.util.stax.*: hidden
+com.sun.xml.internal.messaging.saaj.util.transform.*: hidden
+com.sun.xml.internal.org.jvnet.fastinfoset.*: hidden
+com.sun.xml.internal.org.jvnet.fastinfoset.sax.*: hidden
+com.sun.xml.internal.org.jvnet.fastinfoset.sax.helpers.*: hidden
+com.sun.xml.internal.org.jvnet.fastinfoset.stax.*: hidden
+com.sun.xml.internal.org.jvnet.mimepull.*: hidden
+com.sun.xml.internal.org.jvnet.staxex.*: hidden
+com.sun.xml.internal.org.jvnet.staxex.util.*: hidden
+com.sun.xml.internal.stream.*: hidden
+com.sun.xml.internal.stream.buffer.*: hidden
+com.sun.xml.internal.stream.buffer.sax.*: hidden
+com.sun.xml.internal.stream.buffer.stax.*: hidden
+com.sun.xml.internal.stream.dtd.*: hidden
+com.sun.xml.internal.stream.dtd.nonvalidating.*: hidden
+com.sun.xml.internal.stream.events.*: hidden
+com.sun.xml.internal.stream.util.*: hidden
+com.sun.xml.internal.stream.writers.*: hidden
+com.sun.xml.internal.txw2.*: hidden
+com.sun.xml.internal.txw2.annotation.*: hidden
+com.sun.xml.internal.txw2.output.*: hidden
+com.sun.xml.internal.ws.*: hidden
+com.sun.xml.internal.ws.addressing.*: hidden
+com.sun.xml.internal.ws.addressing.model.*: hidden
+com.sun.xml.internal.ws.addressing.policy.*: hidden
+com.sun.xml.internal.ws.addressing.v200408.*: hidden
+com.sun.xml.internal.ws.api.*: hidden
+com.sun.xml.internal.ws.api.addressing.*: hidden
+com.sun.xml.internal.ws.api.client.*: hidden
+com.sun.xml.internal.ws.api.config.management.*: hidden
+com.sun.xml.internal.ws.api.config.management.policy.*: hidden
+com.sun.xml.internal.ws.api.databinding.*: hidden
+com.sun.xml.internal.ws.api.fastinfoset.*: hidden
+com.sun.xml.internal.ws.api.ha.*: hidden
+com.sun.xml.internal.ws.api.handler.*: hidden
+com.sun.xml.internal.ws.api.message.*: hidden
+com.sun.xml.internal.ws.api.message.saaj.*: hidden
+com.sun.xml.internal.ws.api.message.stream.*: hidden
+com.sun.xml.internal.ws.api.model.*: hidden
+com.sun.xml.internal.ws.api.model.soap.*: hidden
+com.sun.xml.internal.ws.api.model.wsdl.*: hidden
+com.sun.xml.internal.ws.api.model.wsdl.editable.*: hidden
+com.sun.xml.internal.ws.api.pipe.*: hidden
+com.sun.xml.internal.ws.api.pipe.helper.*: hidden
+com.sun.xml.internal.ws.api.policy.*: hidden
+com.sun.xml.internal.ws.api.policy.subject.*: hidden
+com.sun.xml.internal.ws.api.server.*: hidden
+com.sun.xml.internal.ws.api.streaming.*: hidden
+com.sun.xml.internal.ws.api.wsdl.parser.*: hidden
+com.sun.xml.internal.ws.api.wsdl.writer.*: hidden
+com.sun.xml.internal.ws.assembler.*: hidden
+com.sun.xml.internal.ws.assembler.dev.*: hidden
+com.sun.xml.internal.ws.assembler.jaxws.*: hidden
+com.sun.xml.internal.ws.binding.*: hidden
+com.sun.xml.internal.ws.client.*: hidden
+com.sun.xml.internal.ws.client.dispatch.*: hidden
+com.sun.xml.internal.ws.client.sei.*: hidden
+com.sun.xml.internal.ws.commons.xmlutil.*: hidden
+com.sun.xml.internal.ws.config.management.policy.*: hidden
+com.sun.xml.internal.ws.config.metro.dev.*: hidden
+com.sun.xml.internal.ws.config.metro.util.*: hidden
+com.sun.xml.internal.ws.db.*: hidden
+com.sun.xml.internal.ws.db.glassfish.*: hidden
+com.sun.xml.internal.ws.developer.*: hidden
+com.sun.xml.internal.ws.dump.*: hidden
+com.sun.xml.internal.ws.encoding.*: hidden
+com.sun.xml.internal.ws.encoding.fastinfoset.*: hidden
+com.sun.xml.internal.ws.encoding.policy.*: hidden
+com.sun.xml.internal.ws.encoding.soap.*: hidden
+com.sun.xml.internal.ws.encoding.soap.streaming.*: hidden
+com.sun.xml.internal.ws.encoding.xml.*: hidden
+com.sun.xml.internal.ws.fault.*: hidden
+com.sun.xml.internal.ws.handler.*: hidden
+com.sun.xml.internal.ws.message.*: hidden
+com.sun.xml.internal.ws.message.jaxb.*: hidden
+com.sun.xml.internal.ws.message.saaj.*: hidden
+com.sun.xml.internal.ws.message.source.*: hidden
+com.sun.xml.internal.ws.message.stream.*: hidden
+com.sun.xml.internal.ws.model.*: hidden
+com.sun.xml.internal.ws.model.soap.*: hidden
+com.sun.xml.internal.ws.model.wsdl.*: hidden
+com.sun.xml.internal.ws.org.objectweb.asm.*: hidden
+com.sun.xml.internal.ws.policy.*: hidden
+com.sun.xml.internal.ws.policy.jaxws.*: hidden
+com.sun.xml.internal.ws.policy.jaxws.spi.*: hidden
+com.sun.xml.internal.ws.policy.privateutil.*: hidden
+com.sun.xml.internal.ws.policy.sourcemodel.*: hidden
+com.sun.xml.internal.ws.policy.sourcemodel.attach.*: hidden
+com.sun.xml.internal.ws.policy.sourcemodel.wspolicy.*: hidden
+com.sun.xml.internal.ws.policy.spi.*: hidden
+com.sun.xml.internal.ws.policy.subject.*: hidden
+com.sun.xml.internal.ws.protocol.soap.*: hidden
+com.sun.xml.internal.ws.protocol.xml.*: hidden
+com.sun.xml.internal.ws.resources.*: hidden
+com.sun.xml.internal.ws.runtime.config.*: hidden
+com.sun.xml.internal.ws.server.*: hidden
+com.sun.xml.internal.ws.server.provider.*: hidden
+com.sun.xml.internal.ws.server.sei.*: hidden
+com.sun.xml.internal.ws.spi.*: hidden
+com.sun.xml.internal.ws.spi.db.*: hidden
+com.sun.xml.internal.ws.streaming.*: hidden
+com.sun.xml.internal.ws.transport.*: hidden
+com.sun.xml.internal.ws.transport.http.*: hidden
+com.sun.xml.internal.ws.transport.http.client.*: hidden
+com.sun.xml.internal.ws.transport.http.server.*: hidden
+com.sun.xml.internal.ws.util.*: hidden
+com.sun.xml.internal.ws.util.exception.*: hidden
+com.sun.xml.internal.ws.util.pipe.*: hidden
+com.sun.xml.internal.ws.util.xml.*: hidden
+com.sun.xml.internal.ws.wsdl.*: hidden
+com.sun.xml.internal.ws.wsdl.parser.*: hidden
+com.sun.xml.internal.ws.wsdl.writer.*: hidden
+com.sun.xml.internal.ws.wsdl.writer.document.*: hidden
+com.sun.xml.internal.ws.wsdl.writer.document.http.*: hidden
+com.sun.xml.internal.ws.wsdl.writer.document.soap.*: hidden
+com.sun.xml.internal.ws.wsdl.writer.document.soap12.*: hidden
+com.sun.xml.internal.ws.wsdl.writer.document.xsd.*: hidden
+java.awt.dnd.peer.*: proprietary
+java.awt.peer.*: proprietary
+java.desktop.macosx.classes.com.apple.laf.resources.*: hidden
+java.desktop.macosx.classes.sun.awt.resources.*: hidden
+java.desktop.windows.classes.sun.awt.windows.*: hidden
+java.io.*: compact1
+java.lang.*: compact1
+java.lang.annotation.*: compact1
+java.lang.instrument.*: compact3
+java.lang.invoke.*: compact1
+java.lang.management.*: compact3
+java.lang.ref.*: compact1
+java.lang.reflect.*: compact1
+java.math.*: compact1
+java.net.*: compact1
+java.nio.*: compact1
+java.nio.channels.*: compact1
+java.nio.channels.spi.*: compact1
+java.nio.charset.*: compact1
+java.nio.charset.spi.*: compact1
+java.nio.file.*: compact1
+java.nio.file.attribute.*: compact1
+java.nio.file.spi.*: compact1
+java.rmi.*: compact2
+java.rmi.activation.*: compact2
+java.rmi.dgc.*: compact2
+java.rmi.registry.*: compact2
+java.rmi.server.*: compact2
+java.security.*: compact1
+java.security.acl.*: compact3
+java.security.cert.*: compact1
+java.security.interfaces.*: compact1
+java.security.spec.*: compact1
+java.sql.*: compact2
+java.text.*: compact1
+java.text.spi.*: compact1
+java.time.*: compact1
+java.time.chrono.*: compact1
+java.time.format.*: compact1
+java.time.temporal.*: compact1
+java.time.zone.*: compact1
+java.util.*: compact1
+java.util.concurrent.*: compact1
+java.util.concurrent.atomic.*: compact1
+java.util.concurrent.locks.*: compact1
+java.util.function.*: compact1
+java.util.jar.*: compact1
+java.util.logging.*: compact1
+java.util.prefs.*: compact3
+java.util.regex.*: compact1
+java.util.spi.*: compact1
+java.util.stream.*: compact1
+java.util.zip.*: compact1
+javax.annotation.processing.*: compact3
+javax.lang.model.*: compact3
+javax.lang.model.element.*: compact3
+javax.lang.model.type.*: compact3
+javax.lang.model.util.*: compact3
+javax.management.*: compact3
+javax.management.loading.*: compact3
+javax.management.modelmbean.*: compact3
+javax.management.monitor.*: compact3
+javax.management.openmbean.*: compact3
+javax.management.relation.*: compact3
+javax.management.remote.*: compact3
+javax.management.remote.rmi.*: compact3
+javax.management.timer.*: compact3
+javax.naming.*: compact3
+javax.naming.directory.*: compact3
+javax.naming.event.*: compact3
+javax.naming.ldap.*: compact3
+javax.naming.spi.*: compact3
+javax.net.*: compact1
+javax.net.ssl.*: compact1
+javax.rmi.ssl.*: compact2
+javax.script.*: compact1
+javax.security.auth.*: compact1
+javax.security.auth.callback.*: compact1
+javax.security.auth.kerberos.*: compact3
+javax.security.auth.login.*: compact1
+javax.security.auth.spi.*: compact1
+javax.security.auth.x500.*: compact1
+javax.security.cert.*: compact1
+javax.security.sasl.*: compact3
+javax.smartcardio.*: compact3
+javax.sql.*: compact2
+javax.sql.rowset.*: compact3
+javax.sql.rowset.serial.*: compact3
+javax.sql.rowset.spi.*: compact3
+javax.tools.*: compact3
+javax.transaction.xa.*: compact2
+javax.xml.*: compact2
+javax.xml.crypto.*: compact3
+javax.xml.crypto.dom.*: compact3
+javax.xml.crypto.dsig.*: compact3
+javax.xml.crypto.dsig.dom.*: compact3
+javax.xml.crypto.dsig.keyinfo.*: compact3
+javax.xml.crypto.dsig.spec.*: compact3
+javax.xml.datatype.*: compact2
+javax.xml.namespace.*: compact2
+javax.xml.parsers.*: compact2
+javax.xml.stream.*: compact2
+javax.xml.stream.events.*: compact2
+javax.xml.stream.util.*: compact2
+javax.xml.transform.*: compact2
+javax.xml.transform.dom.*: compact2
+javax.xml.transform.sax.*: compact2
+javax.xml.transform.stax.*: compact2
+javax.xml.transform.stream.*: compact2
+javax.xml.validation.*: compact2
+javax.xml.xpath.*: compact2
+jdk.*: compact1
+jdk.internal.org.objectweb.asm.*: hidden
+jdk.internal.org.objectweb.asm.commons.*: hidden
+jdk.internal.org.objectweb.asm.signature.*: hidden
+jdk.internal.org.objectweb.asm.tree.*: hidden
+jdk.internal.org.objectweb.asm.tree.analysis.*: hidden
+jdk.internal.org.objectweb.asm.util.*: hidden
+jdk.internal.org.xml.sax.*: hidden
+jdk.internal.org.xml.sax.helpers.*: hidden
+jdk.internal.util.xml.*: hidden
+jdk.internal.util.xml.impl.*: hidden
+jdk.net.*: compact1
+org.ietf.jgss.*: compact3
+org.jcp.xml.dsig.internal.*: hidden
+org.jcp.xml.dsig.internal.dom.*: hidden
+org.w3c.dom.*: compact2
+org.w3c.dom.bootstrap.*: compact2
+org.w3c.dom.css.*: compact2
+org.w3c.dom.events.*: compact2
+org.w3c.dom.html.*: compact2
+org.w3c.dom.ls.*: compact2
+org.w3c.dom.ranges.*: compact2
+org.w3c.dom.stylesheets.*: compact2
+org.w3c.dom.traversal.*: compact2
+org.w3c.dom.views.*: compact2
+org.w3c.dom.xpath.*: hidden
+org.xml.sax.*: compact2
+org.xml.sax.ext.*: compact2
+org.xml.sax.helpers.*: compact2
+sun.applet.*: proprietary
+sun.applet.resources.*: proprietary
+sun.awt.*: proprietary
+sun.awt.X11.*: proprietary
+sun.awt.datatransfer.*: proprietary
+sun.awt.dnd.*: proprietary
+sun.awt.event.*: hidden
+sun.awt.geom.*: proprietary
+sun.awt.im.*: proprietary
+sun.awt.image.*: proprietary
+sun.awt.motif.*: proprietary
+sun.awt.resources.*: proprietary
+sun.awt.shell.*: proprietary
+sun.awt.util.*: hidden
+sun.awt.windows.*: proprietary
+sun.corba.*: proprietary
+sun.datatransfer.*: hidden
+sun.font.*: proprietary
+sun.instrument.*: proprietary compact3
+sun.invoke.*: hidden
+sun.invoke.anon.*: hidden
+sun.invoke.empty.*: hidden
+sun.invoke.util.*: hidden
+sun.io.*: proprietary compact1
+sun.java2d.*: proprietary
+sun.java2d.cmm.*: hidden
+sun.java2d.cmm.lcms.*: hidden
+sun.java2d.d3d.*: hidden
+sun.java2d.jules.*: hidden
+sun.java2d.loops.*: proprietary
+sun.java2d.opengl.*: proprietary
+sun.java2d.pipe.*: proprietary
+sun.java2d.pipe.hw.*: hidden
+sun.java2d.pisces.*: hidden
+sun.java2d.windows.*: hidden
+sun.java2d.x11.*: hidden
+sun.java2d.xr.*: hidden
+sun.launcher.*: hidden
+sun.launcher.resources.*: hidden
+sun.lwawt.*: hidden
+sun.lwawt.macosx.*: hidden
+sun.management.*: proprietary compact3
+sun.management.counter.*: proprietary compact3
+sun.management.counter.perf.*: proprietary compact3
+sun.management.jdp.*: hidden
+sun.management.jmxremote.*: proprietary compact3
+sun.management.resources.*: proprietary compact3
+sun.misc.*: proprietary compact1
+sun.misc.resources.*: proprietary compact1
+sun.net.*: proprietary compact1
+sun.net.dns.*: proprietary compact3
+sun.net.ftp.*: proprietary
+sun.net.ftp.impl.*: hidden
+sun.net.httpserver.*: hidden
+sun.net.idn.*: hidden
+sun.net.sdp.*: hidden
+sun.net.smtp.*: proprietary
+sun.net.spi.*: proprietary compact1
+sun.net.spi.nameservice.*: proprietary compact1
+sun.net.util.*: proprietary compact1
+sun.net.www.*: proprietary compact1
+sun.net.www.content.audio.*: proprietary
+sun.net.www.content.image.*: proprietary
+sun.net.www.content.text.*: proprietary
+sun.net.www.http.*: proprietary compact1
+sun.net.www.protocol.file.*: proprietary compact1
+sun.net.www.protocol.ftp.*: proprietary
+sun.net.www.protocol.http.*: proprietary compact1
+sun.net.www.protocol.http.logging.*: hidden
+sun.net.www.protocol.http.ntlm.*: hidden
+sun.net.www.protocol.http.spnego.*: hidden
+sun.net.www.protocol.https.*: proprietary compact1
+sun.net.www.protocol.jar.*: proprietary compact1
+sun.net.www.protocol.mailto.*: proprietary
+sun.net.www.protocol.netdoc.*: proprietary
+sun.nio.*: proprietary compact1
+sun.nio.ch.*: proprietary compact1
+sun.nio.ch.sctp.*: hidden
+sun.nio.cs.*: proprietary compact1
+sun.nio.fs.*: hidden
+sun.print.*: proprietary
+sun.print.resources.*: proprietary
+sun.reflect.*: proprietary compact1
+sun.reflect.annotation.*: proprietary compact1
+sun.reflect.generics.factory.*: proprietary compact1
+sun.reflect.generics.parser.*: proprietary compact1
+sun.reflect.generics.reflectiveObjects.*: proprietary compact1
+sun.reflect.generics.repository.*: proprietary compact1
+sun.reflect.generics.scope.*: proprietary compact1
+sun.reflect.generics.tree.*: proprietary compact1
+sun.reflect.generics.visitor.*: proprietary compact1
+sun.reflect.misc.*: hidden
+sun.rmi.log.*: proprietary compact2
+sun.rmi.registry.*: proprietary compact2
+sun.rmi.runtime.*: proprietary compact2
+sun.rmi.server.*: proprietary compact2
+sun.rmi.transport.*: proprietary compact2
+sun.rmi.transport.proxy.*: proprietary compact2
+sun.rmi.transport.tcp.*: proprietary compact2
+sun.security.acl.*: proprietary compact3
+sun.security.action.*: proprietary compact1
+sun.security.jca.*: proprietary compact1
+sun.security.jgss.*: proprietary compact3
+sun.security.jgss.krb5.*: proprietary compact3
+sun.security.jgss.spi.*: proprietary compact3
+sun.security.jgss.spnego.*: hidden
+sun.security.jgss.wrapper.*: hidden
+sun.security.krb5.*: proprietary compact3
+sun.security.krb5.internal.*: proprietary compact3
+sun.security.krb5.internal.ccache.*: proprietary compact3
+sun.security.krb5.internal.crypto.*: proprietary compact3
+sun.security.krb5.internal.crypto.dk.*: proprietary compact3
+sun.security.krb5.internal.ktab.*: proprietary compact3
+sun.security.krb5.internal.rcache.*: proprietary compact3
+sun.security.krb5.internal.tools.*: proprietary compact3
+sun.security.krb5.internal.util.*: proprietary compact3
+sun.security.pkcs.*: proprietary compact1
+sun.security.pkcs10.*: hidden
+sun.security.pkcs12.*: hidden
+sun.security.provider.*: proprietary compact1
+sun.security.provider.certpath.*: proprietary compact1
+sun.security.provider.certpath.ldap.*: hidden
+sun.security.provider.certpath.ssl.*: hidden
+sun.security.rsa.*: proprietary compact1
+sun.security.smartcardio.*: hidden
+sun.security.timestamp.*: proprietary compact1
+sun.security.tools.*: proprietary compact1
+sun.security.tools.keytool.*: hidden
+sun.security.tools.policytool.*: hidden
+sun.security.util.*: proprietary compact1
+sun.security.validator.*: proprietary compact1
+sun.security.x509.*: proprietary compact1
+sun.swing.*: proprietary
+sun.swing.icon.*: hidden
+sun.swing.plaf.*: hidden
+sun.swing.plaf.synth.*: proprietary
+sun.swing.plaf.windows.*: hidden
+sun.swing.table.*: hidden
+sun.swing.text.*: hidden
+sun.swing.text.html.*: hidden
+sun.text.*: proprietary compact1
+sun.text.bidi.*: hidden
+sun.text.normalizer.*: hidden
+sun.text.resources.*: proprietary compact1
+sun.text.resources.en.*: hidden
+sun.tools.jar.*: proprietary
+sun.tools.jar.resources.*: proprietary
+sun.tracing.*: hidden
+sun.tracing.dtrace.*: hidden
+sun.util.*: proprietary compact1
+sun.util.calendar.*: proprietary compact1
+sun.util.cldr.*: hidden
+sun.util.locale.*: proprietary compact1
+sun.util.locale.provider.*: hidden
+sun.util.logging.*: hidden
+sun.util.logging.resources.*: proprietary compact1
+sun.util.resources.*: hidden
+sun.util.resources.en.*: hidden
+sun.util.spi.*: hidden
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/BaseFileManager.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/BaseFileManager.java	Wed Dec 03 14:25:46 2014 +0000
@@ -41,6 +41,7 @@
 import java.nio.charset.CodingErrorAction;
 import java.nio.charset.IllegalCharsetNameException;
 import java.nio.charset.UnsupportedCharsetException;
+import java.nio.file.Path;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -414,6 +415,10 @@
     }
     // </editor-fold>
 
+    public static Kind getKind(Path path) {
+        return getKind(path.getFileName().toString());
+    }
+
     public static Kind getKind(String name) {
         if (name.endsWith(Kind.CLASS.extension))
             return Kind.CLASS;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javap/JavapTask.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javap/JavapTask.java	Wed Dec 03 14:25:46 2014 +0000
@@ -681,6 +681,7 @@
                 final URI uri = new URI(className);
                 final URL url = uri.toURL();
                 final URLConnection conn = url.openConnection();
+                conn.setUseCaches(false);
                 return new JavaFileObject() {
                     @DefinedBy(Api.COMPILER)
                     public Kind getKind() {
@@ -709,7 +710,7 @@
 
                     @DefinedBy(Api.COMPILER)
                     public String getName() {
-                        return url.toString();
+                        return uri.toString();
                     }
 
                     @DefinedBy(Api.COMPILER)
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/SmartFileManager.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/SmartFileManager.java	Wed Dec 03 14:25:46 2014 +0000
@@ -56,6 +56,7 @@
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
+@com.sun.tools.javac.api.ClientCodeWrapper.Trusted
 public class SmartFileManager extends ForwardingJavaFileManager<JavaFileManager> {
 
     // Set of sources that can be seen by javac.
--- a/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Archive.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Archive.java	Wed Dec 03 14:25:46 2014 +0000
@@ -28,6 +28,7 @@
 import com.sun.tools.classfile.Dependency.Location;
 
 import java.io.IOException;
+import java.io.UncheckedIOException;
 import java.nio.file.Path;
 import java.util.HashSet;
 import java.util.Map;
@@ -38,8 +39,12 @@
  * Represents the source of the class files.
  */
 public class Archive {
-    public static Archive getInstance(Path p) throws IOException {
-        return new Archive(p, ClassFileReader.newInstance(p));
+    public static Archive getInstance(Path p) {
+        try {
+            return new Archive(p, ClassFileReader.newInstance(p));
+        } catch (IOException e) {
+            throw new UncheckedIOException(e);
+        }
     }
 
     private final Path path;
--- a/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ClassFileReader.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ClassFileReader.java	Wed Dec 03 14:25:46 2014 +0000
@@ -27,7 +27,12 @@
 import com.sun.tools.classfile.ClassFile;
 import com.sun.tools.classfile.ConstantPoolException;
 import com.sun.tools.classfile.Dependencies.ClassFileError;
-import java.io.*;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
 import java.nio.file.FileVisitResult;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -36,6 +41,8 @@
 import java.util.*;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * ClassFileReader reads ClassFile(s) of a given path that can be
@@ -159,18 +166,23 @@
     }
 
     private static class DirectoryReader extends ClassFileReader {
+        protected final String fsSep;
         DirectoryReader(Path path) throws IOException {
+            this(FileSystems.getDefault(), path);
+        }
+        DirectoryReader(FileSystem fs, Path path) throws IOException {
             super(path);
+            this.fsSep = fs.getSeparator();
         }
 
         public ClassFile getClassFile(String name) throws IOException {
             if (name.indexOf('.') > 0) {
                 int i = name.lastIndexOf('.');
-                String pathname = name.replace('.', File.separatorChar) + ".class";
+                String pathname = name.replace(".", fsSep) + ".class";
                 Path p = path.resolve(pathname);
                 if (!Files.exists(p)) {
                     p = path.resolve(pathname.substring(0, i) + "$" +
-                                     pathname.substring(i+1, pathname.length()));
+                            pathname.substring(i+1, pathname.length()));
                 }
                 if (Files.exists(p)) {
                     return readClassFile(p);
@@ -193,25 +205,28 @@
             };
         }
 
-        private List<Path> walkTree(Path dir) throws IOException {
-            final List<Path> files = new ArrayList<>();
-            Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
-                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
-                        throws IOException {
-                    if (file.getFileName().toString().endsWith(".class")) {
-                        files.add(file);
+        private List<Path> entries;
+        protected synchronized List<Path> walkTree() throws IOException {
+            if (entries == null) {
+                entries = new ArrayList<>();
+                Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
+                    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
+                            throws IOException {
+                        if (file.getFileName().toString().endsWith(".class")) {
+                            entries.add(file);
+                        }
+                        return FileVisitResult.CONTINUE;
                     }
-                    return FileVisitResult.CONTINUE;
-                }
-            });
-            return files;
+                });
+            }
+            return entries;
         }
 
         class DirectoryIterator implements Iterator<ClassFile> {
             private List<Path> entries;
             private int index = 0;
             DirectoryIterator() throws IOException {
-                entries = walkTree(path);
+                entries = walkTree();
                 index = 0;
             }
 
@@ -355,4 +370,29 @@
             throw new UnsupportedOperationException("Not supported yet.");
         }
     }
+
+    /**
+     * ClassFileReader for modules.
+     */
+    static class ModuleClassReader extends DirectoryReader {
+        final String modulename;
+        ModuleClassReader(FileSystem fs, String mn, Path root) throws IOException {
+            super(fs, root);
+            this.modulename = mn;
+        }
+
+        public Set<String> packages() throws IOException {
+            return walkTree().stream()
+                             .map(this::toPackageName)
+                             .sorted()
+                             .collect(Collectors.toSet());
+        }
+
+        String toPackageName(Path p) {
+            if (p.getParent() == null) {
+                return "";
+            }
+            return path.relativize(p.getParent()).toString().replace(fsSep, ".");
+        }
+    }
 }
--- a/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/JdepsTask.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/JdepsTask.java	Wed Dec 03 14:25:46 2014 +0000
@@ -551,10 +551,11 @@
         if (options.includePattern != null) {
             initialArchives.addAll(classpaths);
         }
-        classpaths.addAll(PlatformClassPath.getArchives(options.mpath));
+        classpaths.addAll(PlatformClassPath.getModules(options.mpath));
         if (options.mpath != null) {
-            initialArchives.addAll(PlatformClassPath.getArchives(options.mpath));
+            initialArchives.addAll(PlatformClassPath.getModules(options.mpath));
         }
+        classpaths.addAll(PlatformClassPath.getJarFiles());
         // add all classpath archives to the source locations for reporting
         sourceLocations.addAll(classpaths);
     }
--- a/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Module.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Module.java	Wed Dec 03 14:25:46 2014 +0000
@@ -173,8 +173,8 @@
             return this;
         }
 
-        public Builder include(String p) {
-            packages.add(p);
+        public Builder packages(Set<String> pkgs) {
+            packages.addAll(pkgs);
             return this;
         }
 
@@ -184,10 +184,11 @@
             exports.put(p, new HashSet<>(ms));
             return this;
         }
-        public Builder classes(ClassFileReader reader) {
+        public Builder classes(ClassFileReader.ModuleClassReader reader) {
             this.reader = reader;
             return this;
         }
+
         public Module build() {
             Module m = new Module(reader, name, requires, exports, packages);
             return m;
--- a/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ModulesXmlReader.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ModulesXmlReader.java	Wed Dec 03 14:25:46 2014 +0000
@@ -24,15 +24,9 @@
  */
 package com.sun.tools.jdeps;
 
-import com.sun.tools.classfile.ClassFile;
-import com.sun.tools.jdeps.PlatformClassPath.LegacyImageHelper;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLEventReader;
@@ -40,73 +34,15 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.events.Attribute;
 import javax.xml.stream.events.XMLEvent;
-
-abstract class ModulesXmlReader {
-    abstract ClassFileReader getClassFileReader(String modulename, Set<String> packages)
-        throws IOException;
-
-    static class ImageReader extends ModulesXmlReader {
-        final LegacyImageHelper helper;
-        ImageReader(LegacyImageHelper helper) {
-            this.helper = helper;
-        }
-        ClassFileReader getClassFileReader(String modulename, Set<String> packages)
-            throws IOException
-        {
-            return helper.getClassReader(modulename, packages);
-        }
-    }
+import com.sun.tools.jdeps.ClassFileReader.ModuleClassReader;
+import com.sun.tools.jdeps.PlatformClassPath.ImageHelper;
 
-    static class ModulePathReader extends ModulesXmlReader {
-        final Path mpath;
-        final ClassFileReader defaultReader;
-        ModulePathReader(Path mp) throws IOException {
-            this.mpath = mp;
-            this.defaultReader = new NonExistModuleReader(mpath);
-        }
-        ClassFileReader getClassFileReader(String modulename, Set<String> packages)
-            throws IOException
-        {
-            Path mdir = mpath.resolve(modulename);
-            if (Files.exists(mdir) && Files.isDirectory(mdir)) {
-                return ClassFileReader.newInstance(mdir);
-            } else {
-                // aggregator module or os-specific module in jdeps-modules.xml
-                // mdir not exist
-                return defaultReader;
-            }
-        }
-        class NonExistModuleReader extends ClassFileReader {
-            private final List<ClassFile> classes = Collections.emptyList();
-            private NonExistModuleReader(Path mpath) {
-                super(mpath);
-            }
-
-            public ClassFile getClassFile(String name) throws IOException {
-                return null;
-            }
-            public Iterable<ClassFile> getClassFiles() throws IOException {
-                return classes;
-            }
-        }
-    }
-
-    public static Set<Module> load(Path mpath, InputStream in)
+final class ModulesXmlReader {
+    public static Set<Module> load(ImageHelper helper,InputStream in)
         throws IOException
     {
         try {
-            ModulePathReader reader = new ModulePathReader(mpath);
-            return reader.load(in);
-        } catch (XMLStreamException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public static Set<Module> loadFromImage(LegacyImageHelper helper, InputStream in)
-        throws IOException
-    {
-        try {
-            ImageReader reader = new ImageReader(helper);
+            ModulesXmlReader reader = new ModulesXmlReader(helper);
             return reader.load(in);
         } catch (XMLStreamException e) {
             throw new RuntimeException(e);
@@ -119,8 +55,12 @@
     private static final String DEPEND    = "depend";
     private static final String EXPORT    = "export";
     private static final String TO        = "to";
-    private static final String INCLUDE   = "include";
     private static final QName  REEXPORTS = new QName("re-exports");
+    private final ImageHelper helper;
+    ModulesXmlReader(ImageHelper helper) {
+        this.helper = helper;
+    }
+
     public Set<Module> load(InputStream in) throws XMLStreamException, IOException {
         Set<Module> modules = new HashSet<>();
         if (in == null) {
@@ -162,9 +102,6 @@
                         }
                         mb.require(getData(reader), reexports);
                         break;
-                    case INCLUDE:
-                        mb.include(getData(reader));
-                        break;
                     case EXPORT:
                         exportedPackage = getNextTag(reader, NAME);
                         break;
@@ -178,8 +115,9 @@
                 String endTag = event.asEndElement().getName().getLocalPart();
                 switch (endTag) {
                     case MODULE:
-                        ClassFileReader cfr = getClassFileReader(modulename, mb.packages);
+                        ModuleClassReader cfr = helper.getModuleClassReader(modulename);
                         mb.classes(cfr);
+                        mb.packages(cfr.packages());
                         modules.add(mb.build());
                         mb = null;
                         break;
--- a/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/PlatformClassPath.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/PlatformClassPath.java	Wed Dec 03 14:25:46 2014 +0000
@@ -24,39 +24,48 @@
  */
 package com.sun.tools.jdeps;
 
-import com.sun.tools.classfile.Annotation;
 import com.sun.tools.classfile.ClassFile;
-import com.sun.tools.classfile.ConstantPool;
-import com.sun.tools.classfile.ConstantPoolException;
-import com.sun.tools.classfile.RuntimeAnnotations_attribute;
-import com.sun.tools.classfile.Dependencies.ClassFileError;
+import com.sun.tools.jdeps.ClassFileReader.ModuleClassReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.BufferedInputStream;
-import java.nio.file.FileVisitResult;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.SimpleFileVisitor;
+import java.net.URI;
+import java.nio.file.*;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.*;
-import java.util.jar.*;
-
-import static com.sun.tools.classfile.Attribute.*;
-import static com.sun.tools.jdeps.ClassFileReader.*;
+import java.util.stream.Collectors;
 
 /**
  * ClassPath for Java SE and JDK
  */
 class PlatformClassPath {
     private static List<Archive> modules;
-    static synchronized List<Archive> getArchives(Path mpath) throws IOException {
+    static synchronized List<Archive> getModules(Path mpath) throws IOException {
         if (modules == null) {
-            initPlatformArchives(mpath);
+            initPlatformModules(mpath);
         }
         return modules;
     }
 
+    private static void initPlatformModules(Path mpath) throws IOException {
+        ImageHelper helper = ImageHelper.getInstance(mpath);
+        String fn = System.getProperty("jdeps.modules.xml");
+        if (fn != null) {
+            Path p = Paths.get(fn);
+            try (InputStream in = new BufferedInputStream(Files.newInputStream(p))) {
+                modules = new ArrayList<>(ModulesXmlReader.load(helper, in));
+            }
+        } else {
+            try (InputStream in = PlatformClassPath.class
+                    .getResourceAsStream("resources/jdeps-modules.xml")) {
+                modules = new ArrayList<>(ModulesXmlReader.load(helper, in));
+            }
+        }
+        if (findModule("java.base") != null) {
+            Profile.initProfiles(modules);
+        }
+    }
+
     /**
      * Finds the module with the given name. Returns null
      * if such module doesn't exist.
@@ -75,237 +84,86 @@
         return null;
     }
 
-    private static List<Archive> initPlatformArchives(Path mpath) throws IOException {
-        Path home = Paths.get(System.getProperty("java.home"));
-        if (mpath == null && !home.endsWith("jre")) {
-            // jdk build
-            Path p = home.resolve("modules");
-            if (Files.isDirectory(p)) {
-                mpath = p;
-            }
-        }
-        modules = mpath != null ? initModules(mpath) : initLegacyImage(home);
-        if (findModule("java.base") != null) {
-            Profile.initProfiles();
-        }
-        return modules;
-    }
-
-    private static List<Archive> initModules(Path mpath) throws IOException {
-        String fn = System.getProperty("jdeps.modules.xml");
-        if (fn!= null) {
-            Path p = Paths.get(fn);
-            try (InputStream in = new BufferedInputStream(Files.newInputStream(p))) {
-                return new ArrayList<Archive>(ModulesXmlReader.load(mpath, in));
-            }
-        } else {
-            try (InputStream in = PlatformClassPath.class
-                    .getResourceAsStream("resources/jdeps-modules.xml")) {
-                return new ArrayList<Archive>(ModulesXmlReader.load(mpath, in));
-            }
-        }
+    /**
+     * Returns JAR files in $java.home/lib.  This is for transition until
+     * all components are linked into jimage.
+     */
+    static List<Archive> getJarFiles() throws IOException {
+        Path home = Paths.get(System.getProperty("java.home"), "lib");
+        return Files.find(home, 1, (Path p, BasicFileAttributes attr)
+                -> p.getFileName().toString().endsWith(".jar"))
+                .map(Archive::getInstance)
+                .collect(Collectors.toList());
     }
 
-    private static List<Archive> initLegacyImage(Path home) throws IOException {
-        LegacyImageHelper cfr = new LegacyImageHelper(home);
-        List<Archive> archives = new ArrayList<>(cfr.nonPlatformArchives);
-        try (InputStream in = PlatformClassPath.class
-                .getResourceAsStream("resources/jdeps-modules.xml")) {
-            archives.addAll(ModulesXmlReader.loadFromImage(cfr, in));
-            return archives;
-        }
-    }
-
-    static class LegacyImageHelper {
-        private static final List<String> NON_PLATFORM_JARFILES =
-                Arrays.asList("alt-rt.jar", "jfxrt.jar", "ant-javafx.jar", "javafx-mx.jar");
-        final List<Archive> nonPlatformArchives = new ArrayList<>();
-        final List<JarFile> jarfiles = new ArrayList<>();
-        final Path home;
-
-        LegacyImageHelper(Path home) {
-            this.home = home;
-            try {
-                if (home.endsWith("jre")) {
-                    // jar files in <javahome>/jre/lib
-                    addJarFiles(home.resolve("lib"));
-                    if (home.getParent() != null) {
-                        // add tools.jar and other JDK jar files
-                        Path lib = home.getParent().resolve("lib");
-                        if (Files.exists(lib)) {
-                            addJarFiles(lib);
-                        }
-                    }
-                } else if (Files.exists(home.resolve("lib"))) {
-                    // add other JAR files
-                    addJarFiles(home.resolve("lib"));
-                } else {
-                    throw new RuntimeException("\"" + home + "\" not a JDK home");
+    static class ImageHelper {
+        static ImageHelper getInstance(Path mpath) throws IOException {
+            if (mpath != null) {
+                return new ImageHelper(mpath);
+            }
+            Path home = Paths.get(System.getProperty("java.home"));
+            Path mlib = home.resolve("lib").resolve("modules");
+            if (Files.isDirectory(mlib)) {
+                // jimage
+                FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+                return new ImageHelper(fs, fs.getPath("/"));
+            } else {
+                // exploded modules
+                mlib = home.resolve("modules");
+                if (!Files.isDirectory(mlib)) {
+                    throw new InternalError(home + " not a modular image");
                 }
-            } catch (IOException e) {
-                throw new Error(e);
+                return new ImageHelper(mlib);
             }
         }
 
-        /**
-         * Returns a ClassFileReader that only reads classes for the given modulename.
-         */
-        ClassFileReader getClassReader(String modulename, Set<String> packages) throws IOException {
-            return new ModuleClassReader(modulename, packages);
+        private final FileSystem fs;
+        private final Path mpath;
+
+        ImageHelper(Path path) throws IOException {
+            this(FileSystems.getDefault(), path);
         }
 
-        private void addJarFiles(final Path root) throws IOException {
-            final Path ext = root.resolve("ext");
-            Files.walkFileTree(root, new SimpleFileVisitor<Path>() {
-                @Override
-                public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
-                    throws IOException
-                {
-                    if (dir.equals(root) || dir.equals(ext)) {
-                        return FileVisitResult.CONTINUE;
-                    } else {
-                        // skip other cobundled JAR files
-                        return FileVisitResult.SKIP_SUBTREE;
-                    }
-                }
-
-                @Override
-                public FileVisitResult visitFile(Path p, BasicFileAttributes attrs)
-                    throws IOException
-                {
-                    String fn = p.getFileName().toString();
-                    if (fn.endsWith(".jar")) {
-                        // JDK may cobundle with JavaFX that doesn't belong to any profile
-                        // Treat jfxrt.jar as regular Archive
-                        if (NON_PLATFORM_JARFILES.contains(fn)) {
-                            nonPlatformArchives.add(Archive.getInstance(p));
-                        } else {
-                            jarfiles.add(new JarFile(p.toFile()));
-                        }
-                    }
-                    return FileVisitResult.CONTINUE;
-                }
-            });
+        ImageHelper(FileSystem fs, Path path) throws IOException {
+            this.fs = fs;
+            this.mpath = path;
         }
 
         /**
-         * ModuleClassFile reads classes for the specified module from the legacy image.
-         *
+         * Returns a ModuleClassReader that only reads classes for the given modulename.
          */
-        class ModuleClassReader extends JarFileReader {
-            private JarFile cachedJarFile = getJarFile(0);
-            private final Set<String> packages;
-            private final String module;
-            ModuleClassReader(String module, Set<String> packages) throws IOException {
-                super(home, null);
-                this.module = module;
-                this.packages = packages;
+        public ModuleClassReader getModuleClassReader(String modulename)
+            throws IOException
+        {
+            Path mp = mpath.resolve(modulename);
+            if (Files.exists(mp) && Files.isDirectory(mp)) {
+                return new ModuleClassReader(fs, modulename, mp);
+            } else {
+                // aggregator module or os-specific module in jdeps-modules.xml
+                // mdir not exist
+                return new NonExistModuleReader(fs, modulename, mp);
             }
+        }
 
-            private boolean includes(String name) {
-                String cn = name.replace('/', '.');
-                int i = cn.lastIndexOf('.');
-                String pn = i > 0 ? cn.substring(0, i) : "";
-                return packages.contains(pn);
-            }
+        static class NonExistModuleReader extends ModuleClassReader {
+            private final List<ClassFile> classes = Collections.emptyList();
 
-            private JarEntry findJarEntry(JarFile jarfile, String entryName1, String entryName2) {
-                JarEntry e = jarfile.getJarEntry(entryName1);
-                if (e == null) {
-                    e = jarfile.getJarEntry(entryName2);
-                }
-                return e;
-            }
-
-            public String toString() {
-                return module + " " + packages.size() + " " + packages;
+            private NonExistModuleReader(FileSystem fs, String mn, Path mpath)
+                throws IOException
+            {
+                super(fs, mn, mpath);
             }
 
-            @Override
             public ClassFile getClassFile(String name) throws IOException {
-                if (jarfiles.isEmpty() || !includes(name)) {
-                    return null;
-                }
-
-                if (name.indexOf('.') > 0) {
-                    int i = name.lastIndexOf('.');
-                    String entryName = name.replace('.', '/') + ".class";
-                    String innerClassName = entryName.substring(0, i) + "$"
-                            + entryName.substring(i + 1, entryName.length());
-                    JarEntry e = findJarEntry(cachedJarFile, entryName, innerClassName);
-                    if (e != null) {
-                        return readClassFile(cachedJarFile, e);
-                    }
-                    for (JarFile jf : jarfiles) {
-                        if (jf == cachedJarFile) {
-                            continue;
-                        }
-                        System.err.format("find jar entry %s at %s%n", entryName, jf);
-                        e = findJarEntry(jf, entryName, innerClassName);
-                        if (e != null) {
-                            cachedJarFile = jf;
-                            return readClassFile(jf, e);
-                        }
-                    }
-                } else {
-                    String entryName = name + ".class";
-                    JarEntry e = cachedJarFile.getJarEntry(entryName);
-                    if (e != null) {
-                        return readClassFile(cachedJarFile, e);
-                    }
-                    for (JarFile jf : jarfiles) {
-                        if (jf == cachedJarFile) {
-                            continue;
-                        }
-                        e = jf.getJarEntry(entryName);
-                        if (e != null) {
-                            cachedJarFile = jf;
-                            return readClassFile(jf, e);
-                        }
-                    }
-                }
                 return null;
             }
 
-            @Override
             public Iterable<ClassFile> getClassFiles() throws IOException {
-                final Iterator<ClassFile> iter = new ModuleClassIterator(this);
-                return new Iterable<ClassFile>() {
-                    public Iterator<ClassFile> iterator() {
-                        return iter;
-                    }
-                };
-            }
-
-            private JarFile getJarFile(int index) {
-                return index < jarfiles.size() ? jarfiles.get(index) : null;
+                return classes;
             }
 
-            class ModuleClassIterator extends JarFileIterator {
-                private int index;
-                ModuleClassIterator(ModuleClassReader reader) {
-                    super(reader);
-                    this.index = 0;
-                    this.jf = getJarFile(0);
-                    this.entries = jf != null ? jf.entries() : null;
-                    this.nextEntry = nextEntry();
-                }
-
-                @Override
-                protected JarEntry nextEntry() {
-                    while (jf != null) {
-                        while (entries.hasMoreElements()) {
-                            JarEntry e = entries.nextElement();
-                            String name = e.getName();
-                            if (name.endsWith(".class") && includes(name)) {
-                                return e;
-                            }
-                        }
-                        jf = getJarFile(++index);
-                        entries = jf != null ? jf.entries() : null;
-                    }
-                    return null;
-                }
+            public Set<String> packages() {
+                return Collections.emptySet();
             }
         }
     }
--- a/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Profile.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Profile.java	Wed Dec 03 14:25:46 2014 +0000
@@ -28,23 +28,28 @@
 import java.util.*;
 
 /**
- * Build the profile information from ct.sym if exists.
+ * Build the profile information.
  */
 enum Profile {
     COMPACT1("compact1", 1, "java.compact1"),
     COMPACT2("compact2", 2, "java.compact2"),
-    COMPACT3("compact3", 3, "java.compact3"),
-    FULL_JRE("Full JRE", 4, "java.se");
+    COMPACT3("compact3", 3, "java.compact3", "java.smartcardio", "jdk.sctp",
+                            "jdk.httpserver", "jdk.security.auth",
+                            "jdk.naming.dns", "jdk.naming.rmi"),
+    FULL_JRE("Full JRE", 4, "java.se", "jdk.deploy.osx", "jdk.charsets",
+                            "jdk.crypto.ec", "jdk.crypto.pkcs11",
+                            "jdk.crypto.mscapi", "jdk.crypto.ucrypto", "jdk.jvmstat",
+                            "jdk.localedata", "jdk.scripting.nashorn", "jdk.zipfs");
 
     final String name;
     final int profile;
-    final String moduleName;
+    final String[] mnames;
     final Set<Module> modules = new HashSet<>();
 
-    Profile(String name, int profile, String moduleName) {
+    Profile(String name, int profile, String... mnames) {
         this.name = name;
         this.profile = profile;
-        this.moduleName = moduleName;
+        this.mnames = mnames;
     }
 
     public String profileName() {
@@ -53,7 +58,7 @@
 
     @Override
     public String toString() {
-        return moduleName;
+        return mnames[0];
     }
 
     public static int getProfileCount() {
@@ -86,27 +91,37 @@
         return null;
     }
 
-    final static Set<Module> JDK = new HashSet<>();
-    static void initProfiles() {
+    private final static Set<Module> JDK = new HashSet<>();
+    static void initProfiles(List<Archive> modules) {
+        // add all modules into  JDK
+        modules.forEach(m -> JDK.add((Module)m));
+
         for (Profile p : Profile.values()) {
-            Module m = PlatformClassPath.findModule(p.moduleName);
-            if (m == null)
-                throw new Error(p.moduleName + " doesn't exist");
-            p.modules.add(m);
-            JDK.add(m);
-            for (String n : m.requires().keySet()) {
-                Module d = PlatformClassPath.findModule(n);
-                if (d == null)
-                    throw new Error(n + " doesn't exist");
-                p.modules.add(d);
-                JDK.add(d);
+            for (String mn : p.mnames) {
+                // this includes platform-dependent module that may not exist
+                Module m = PlatformClassPath.findModule(mn);
+                if (m != null) {
+                    p.addModule(m);
+                }
             }
         }
     }
+
+    private void addModule(Module m) {
+        modules.add(m);
+        for (String n : m.requires().keySet()) {
+            Module d = PlatformClassPath.findModule(n);
+            if (d == null) {
+                throw new InternalError("module " + n + " required by " +
+                        m.name() + " doesn't exist");
+            }
+            modules.add(d);
+        }
+    }
     // for debugging
     public static void main(String[] args) throws IOException {
         // find platform modules
-        PlatformClassPath.getArchives(null);
+        PlatformClassPath.getModules(null);
         if (Profile.getProfileCount() == 0) {
             System.err.println("No profile is present in this JDK");
         }
--- a/langtools/test/com/sun/javadoc/testCompletionFailure/TestCompletionFailure.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testCompletionFailure/TestCompletionFailure.java	Wed Dec 03 14:25:46 2014 +0000
@@ -46,8 +46,6 @@
         checkExit(Exit.OK);
 
         checkOutput(Output.STDERR, false,
-                "TestCompletionFailure: error - "
-                + "com.sun.tools.javac.code.Symbol$CompletionFailure: class file for "
-                + "sun.util.locale.provider.LocaleProviderAdapter not found");
+                "sun.util.locale.provider.LocaleProviderAdapter");
     }
 }
--- a/langtools/test/tools/apt/Basics/CheckAptIsRemovedTest.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4908512 5024825 4957203 4993280 4996963 6174696 6177059 7041249
- * @summary Make sure apt is removed and doesn't come back
- * @library /tools/lib
- * @build ToolBox
- * @run main CheckAptIsRemovedTest
- */
-
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-// Original test: test/tools/apt/Basics/apt.sh
-public class CheckAptIsRemovedTest {
-    //I think this class can be let with the imports only and that should be enough for as test's purpose
-    private static final String NullAPFSrc =
-        "import com.sun.mirror.apt.*;\n" +
-        "import com.sun.mirror.declaration.*;\n" +
-        "import com.sun.mirror.type.*;\n" +
-        "import com.sun.mirror.util.*;\n" +
-        "import java.util.Collection;\n" +
-        "import java.util.Set;\n\n" +
-
-        "public class NullAPF implements AnnotationProcessorFactory {\n" +
-        "    static class NullAP implements AnnotationProcessor {\n" +
-        "        NullAP(AnnotationProcessorEnvironment ape) {}\n" +
-        "        public void process() {return;}\n" +
-        "    }\n\n" +
-
-        "    static Collection<String> supportedTypes;\n\n" +
-        "    static {\n" +
-        "        String types[] = {\"*\"};\n" +
-        "        supportedTypes = java.util.Arrays.asList(types);\n" +
-        "    }\n\n" +
-
-        "    public Collection<String> supportedOptions() {\n" +
-        "        return java.util.Collections.emptySet();\n" +
-        "    }\n\n" +
-
-        "    public Collection<String> supportedAnnotationTypes() {\n" +
-        "        return supportedTypes;\n" +
-        "    }\n\n" +
-
-        "    public AnnotationProcessor getProcessorFor(" +
-        "        Set<AnnotationTypeDeclaration> atds,\n" +
-        "        AnnotationProcessorEnvironment env) {\n" +
-        "        return new NullAP(env);\n" +
-        "    }\n" +
-        "}";
-
-    public static void main(String[] args) throws Exception {
-        String testJDK = System.getProperty("test.jdk");
-        Path aptLin = Paths.get(testJDK, "bin", "apt");
-        Path aptWin = Paths.get(testJDK, "bin", "apt.exe");
-
-        if (Files.exists(aptLin) || Files.exists(aptWin)) {
-            throw new AssertionError("apt executable should not exist");
-        }
-
-        Path classpath = Paths.get(testJDK, "lib", "tools.jar");
-        ToolBox tb = new ToolBox();
-        tb.new JavacTask()
-                .classpath(classpath.toString()) // TODO: add overload
-                .sourcepath(".")
-                .sources(NullAPFSrc)
-                .run(ToolBox.Expect.FAIL)
-                .writeAll();
-    }
-
-}
--- a/langtools/test/tools/doclint/tool/PathsTest.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/doclint/tool/PathsTest.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,8 +25,13 @@
  * @test
  * @bug 8006263
  * @summary Supplementary test cases needed for doclint
+ * @library /tools/lib
+ * @build ToolBox
+ * @run main PathsTest
  */
 
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.doclint.DocLint;
 import com.sun.tools.doclint.DocLint.BadArgs;
 import java.io.File;
@@ -35,6 +40,8 @@
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.regex.Pattern;
+import javax.tools.StandardLocation;
+import javax.tools.JavaFileManager;
 
 public class PathsTest {
     public static void main(String... args) throws Exception {
@@ -56,9 +63,11 @@
 
         test("src/Test.java", "-sourcepath", "src1" + PS + "src2");
         test("src/Test.java", "-classpath", "classes1" + PS + "classes2");
+
+        File testJar = createJar();
         String sysBootClassPath = System.getProperty("sun.boot.class.path");
         test("src/Test.java", "-bootclasspath",
-                sysBootClassPath + PS + "classes1" + PS + "classes2");
+                testJar + PS + "classes1" + PS + "classes2");
 
         if (errors > 0)
             throw new Exception(errors + " errors found");
@@ -87,6 +96,17 @@
         }
     }
 
+    File createJar() throws IOException {
+        File f = new File("test.jar");
+        try (JavaFileManager fm = new JavacFileManager(new Context(), false, null)) {
+            ToolBox tb = new ToolBox();
+            tb.new JarTask(f.getPath())
+                .files(fm, StandardLocation.PLATFORM_CLASS_PATH, "java.lang.*")
+                .run();
+        }
+        return f;
+    }
+
     void compile(String... args) {
         for (int i = 0; i < args.length; i++) {
             if (args[i].equals("-d")) {
--- a/langtools/test/tools/javac/6508981/TestInferBinaryName.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/6508981/TestInferBinaryName.java	Wed Dec 03 14:25:46 2014 +0000
@@ -49,8 +49,6 @@
  * the impl of inferBinaryName for that file object.
  */
 public class TestInferBinaryName {
-    static final boolean IGNORE_SYMBOL_FILE = false;
-    static final boolean USE_SYMBOL_FILE = true;
     static final boolean DONT_USE_ZIP_FILE_INDEX = false;
     static final boolean USE_ZIP_FILE_INDEX = true;
 
@@ -59,15 +57,14 @@
     }
 
     void run() throws Exception {
-        //System.err.println(System.getProperties());
         testDirectory();
-        testSymbolArchive();
 
         File testJar = createJar();
 
         testZipArchive(testJar);
         testZipFileIndexArchive(testJar);
         testZipFileIndexArchive2(testJar);
+
         if (errors > 0)
             throw new Exception(errors + " error found");
     }
@@ -87,27 +84,17 @@
         String testClassName = "p.A";
         List<File> testClasses = Arrays.asList(new File(System.getProperty("test.classes")));
         try (JavaFileManager fm =
-                getFileManager(testClasses, USE_SYMBOL_FILE, USE_ZIP_FILE_INDEX)) {
+                getFileManager(testClasses, USE_ZIP_FILE_INDEX)) {
             test("testDirectory",
                 fm, testClassName, "com.sun.tools.javac.file.RegularFileObject");
         }
     }
 
-    void testSymbolArchive() throws IOException {
-        String testClassName = "java.lang.String";
-        List<File> path = getPath(System.getProperty("sun.boot.class.path"));
-        try (JavaFileManager fm =
-                getFileManager(path, USE_SYMBOL_FILE, DONT_USE_ZIP_FILE_INDEX)) {
-            test("testSymbolArchive",
-                    fm, testClassName, "com.sun.tools.javac.file.SymbolArchive$SymbolFileObject");
-        }
-    }
-
     void testZipArchive(File testJar) throws IOException {
         String testClassName = "java.lang.String";
         List<File> path = Arrays.asList(testJar);
         try (JavaFileManager fm =
-                getFileManager(path, IGNORE_SYMBOL_FILE, DONT_USE_ZIP_FILE_INDEX)) {
+                getFileManager(path, DONT_USE_ZIP_FILE_INDEX)) {
             test("testZipArchive",
                  fm, testClassName, "com.sun.tools.javac.file.ZipArchive$ZipFileObject");
         }
@@ -117,7 +104,7 @@
         String testClassName = "java.lang.String";
         List<File> path = Arrays.asList(testJar);
         try (JavaFileManager fm =
-                getFileManager(path, USE_SYMBOL_FILE, USE_ZIP_FILE_INDEX)) {
+                getFileManager(path, USE_ZIP_FILE_INDEX)) {
             test("testZipFileIndexArchive",
                  fm, testClassName, "com.sun.tools.javac.file.ZipFileIndexArchive$ZipFileIndexFileObject");
         }
@@ -127,7 +114,7 @@
         String testClassName = "java.lang.String";
         List<File> path = Arrays.asList(testJar);
         try (JavaFileManager fm =
-                getFileManager(path, IGNORE_SYMBOL_FILE, USE_ZIP_FILE_INDEX)) {
+                getFileManager(path, USE_ZIP_FILE_INDEX)) {
             test("testZipFileIndexArchive2",
                  fm, testClassName, "com.sun.tools.javac.file.ZipFileIndexArchive$ZipFileIndexFileObject");
         }
@@ -159,7 +146,6 @@
     }
 
     JavaFileManager getFileManager(List<File> path,
-                                   boolean symFileKind,
                                    boolean zipFileIndexKind)
             throws IOException {
         Context ctx = new Context();
@@ -167,8 +153,6 @@
         options.put("useOptimizedZip",
                 Boolean.toString(zipFileIndexKind == USE_ZIP_FILE_INDEX));
 
-        if (symFileKind == IGNORE_SYMBOL_FILE)
-            options.put("ignore.symbol.file", "true");
         JavacFileManager fm = new JavacFileManager(ctx, false, null);
         fm.setLocation(CLASS_PATH, path);
         return fm;
--- a/langtools/test/tools/javac/EarlyAssertWrapper.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/EarlyAssertWrapper.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,14 +37,8 @@
     void run() throws Exception {
         List<String> cmd = new ArrayList<String>();
         File java_home = new File(System.getProperty("java.home"));
-        if (java_home.getName().equals("jre"))
-            java_home = java_home.getParentFile();
         cmd.add(new File(new File(java_home, "bin"), "java").getPath());
 
-        // ensure we run with the same bootclasspath as this test,
-        // in case this test is being run with -Xbootclasspath
-        cmd.add("-Xbootclasspath:" + System.getProperty("sun.boot.class.path"));
-
         // propogate classpath
         cmd.add("-classpath");
         cmd.add(System.getProperty("java.class.path"));
--- a/langtools/test/tools/javac/Paths/Class-Path.sh	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/Paths/Class-Path.sh	Wed Dec 03 14:25:46 2014 +0000
@@ -97,13 +97,13 @@
 Success "$javac" ${TESTTOOLVMOPTS} -cp "jars/B.zip"       Main.java
 Success "$java" ${TESTVMOPTS}  -cp "jars/B.zip${PS}." Main
 
-Success "$javac" ${TESTTOOLVMOPTS} -extdirs "jars"        -cp None Main.java
-Success "$javac" ${TESTTOOLVMOPTS} -Djava.ext.dirs="jars" -cp None Main.java
-Success "$java" ${TESTVMOPTS}  -Djava.ext.dirs="jars" -cp .    Main
+# Success "$javac" ${TESTTOOLVMOPTS} -extdirs "jars"        -cp None Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} -Djava.ext.dirs="jars" -cp None Main.java
+# Success "$java" ${TESTVMOPTS}  -Djava.ext.dirs="jars" -cp .    Main
 
-Success "$javac" ${TESTTOOLVMOPTS} -endorseddirs "jars"        -cp None Main.java
-Success "$javac" ${TESTTOOLVMOPTS} -Djava.endorsed.dirs="jars" -cp None Main.java
-Success "$java" ${TESTVMOPTS}  -Djava.endorsed.dirs="jars" -cp .    Main
+# Success "$javac" ${TESTTOOLVMOPTS} -endorseddirs "jars"        -cp None Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} -Djava.endorsed.dirs="jars" -cp None Main.java
+# Success "$java" ${TESTVMOPTS}  -Djava.endorsed.dirs="jars" -cp .    Main
 
 Failure "$java" ${TESTVMOPTS}  -Xbootclasspath/p:"jars/A.jar" -cp .    Main
 Failure "$java" ${TESTVMOPTS}  -Xbootclasspath/a:"jars/B.zip" -cp .    Main
--- a/langtools/test/tools/javac/Paths/Class-Path2.sh	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/Paths/Class-Path2.sh	Wed Dec 03 14:25:46 2014 +0000
@@ -100,11 +100,11 @@
 # Test 2: Use of extension directories is incorrect
 #
 
-Success "$javac" ${TESTTOOLVMOPTS} -extdirs jars          -cp None Main.java
-Success "$java"  ${TESTVMOPTS}     -Djava.ext.dirs="jars" -cp .    Main
+# Success "$javac" ${TESTTOOLVMOPTS} -extdirs jars          -cp None Main.java
+# Success "$java"  ${TESTVMOPTS}     -Djava.ext.dirs="jars" -cp .    Main
 
-Success "$javac" ${TESTTOOLVMOPTS} -extdirs jars/sub          -cp None Main.java
-Success "$java"  ${TESTVMOPTS}     -Djava.ext.dirs="jars/sub" -cp .    Main
+# Success "$javac" ${TESTTOOLVMOPTS} -extdirs jars/sub          -cp None Main.java
+# Success "$java"  ${TESTVMOPTS}     -Djava.ext.dirs="jars/sub" -cp .    Main
 
 Cleanup
 
--- a/langtools/test/tools/javac/Paths/CompileClose.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 5071352
- * @summary Make sure compiler closes all open files on Windows
- * @author Martin Buchholz
- *
- * @run main/othervm -Xms200m -Xmx200m CompileClose
- */
-
-// -Xms120m is sufficient to inhibit a gc during a compile.
-// -Xms200m leaves room for expansion and was used by the customer.
-
-import java.io.*;
-
-public class CompileClose {
-    static void writeFile(String f, String contents) throws IOException {
-        PrintStream s = new PrintStream(new FileOutputStream(f));
-        s.println(contents);
-        s.close();
-    }
-
-    static void rm(String filename) throws Exception {
-        File f = new File(filename);
-        f.delete();
-        if (f.exists())
-            throw new Exception(filename + ": couldn't remove");
-    }
-
-    static void clean() throws Exception {
-        rm("tmpCompileClose.java");
-        rm("tmpCompileClose.class");
-        rm("tmpCompileClose.jar");
-    }
-
-    public static void main(String args[]) throws Exception {
-        try {
-            clean();
-            main1();
-        } finally {
-            clean();
-        }
-    }
-
-    static void main1() throws Exception {
-        writeFile("tmpCompileClose.java",
-                  "public class tmpCompileClose {}");
-        // Any old jar file will do
-        SameJVM.jar("cf", "tmpCompileClose.jar", "tmpCompileClose.java");
-        System.gc(); // Inhibit gc during next compile
-        SameJVM.javac("-cp", "tmpCompileClose.jar", "tmpCompileClose.java");
-        // The following rm is the actual test!
-        rm("tmpCompileClose.jar");
-    }
-}
--- a/langtools/test/tools/javac/Paths/Diagnostics.sh	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/Paths/Diagnostics.sh	Wed Dec 03 14:25:46 2014 +0000
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -37,11 +37,11 @@
 
 set -u
 
-BCP=`DefaultBootClassPath`
+# BCP=`DefaultBootClassPath`
 
 DiagnosticsInEnglishPlease
 
-No() { NO="no"; "$@"; NO=""; }	# No means NO!
+No() { NO="no"; "$@"; NO=""; }  # No means NO!
 
 Warning() {
     HorizontalRule
@@ -52,9 +52,9 @@
     case "$output" in *warning:*) gotwarning="yes";; *) gotwarning="no";; esac
 
     if test "$gotwarning" = "yes" -a "$NO" = "no"; then
-	Fail "Command \"$*\" printed an unexpected warning"
+        Fail "Command \"$*\" printed an unexpected warning"
     elif test "$gotwarning" = "no" -a "$NO" != "no"; then
-	Fail "Command \"$*\" did not generate the expected warning"
+        Fail "Command \"$*\" did not generate the expected warning"
     fi
 }
 
@@ -66,20 +66,20 @@
     case "$output" in *error:*) goterror="yes";; *) goterror="no";; esac
 
     if test "$NO" = "no"; then
-	test "$rc" -ne 0 && \
-	    Fail "Command \"$*\" failed with return code $rc"
-	test "$goterror" = "yes" && \
-	    Fail "Command \"$*\" did not generate any error message"
+        test "$rc" -ne 0 && \
+            Fail "Command \"$*\" failed with return code $rc"
+        test "$goterror" = "yes" && \
+            Fail "Command \"$*\" did not generate any error message"
     else
-	test "$rc" -eq 0 && \
-	    Fail "Command \"$*\" was supposed to Die with fatal error";
-	test "$goterror" = "no" && \
-	    Fail "Command \"$*\" printed an unexpected error message"
+        test "$rc" -eq 0 && \
+            Fail "Command \"$*\" was supposed to Die with fatal error";
+        test "$goterror" = "no" && \
+            Fail "Command \"$*\" printed an unexpected error message"
     fi
 }
 
 Cleanup() {
-    Sys rm -rf Main.java Main.class 
+    Sys rm -rf Main.java Main.class
     Sys rm -rf classes classes.foo classes.jar classes.war classes.zip
     Sys rm -rf MANIFEST.MF classesRef.jar classesRefRef.jar jars
 }
@@ -99,18 +99,19 @@
 Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path -cp ".${PS}classes"         Main.java
 Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-Xbootclasspath/p:classes" Main.java
 Warning "$javac" ${TESTTOOLVMOPTS} -Xlint      "-Xbootclasspath/a:classes" Main.java
+
 Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-endorseddirs" "classes"   Main.java
 Warning "$javac" ${TESTTOOLVMOPTS} -Xlint      "-extdirs"      "classes"   Main.java
-Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-Xbootclasspath:classes${PS}${BCP}" Main.java
+# Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-Xbootclasspath:classes${PS}${BCP}" Main.java
 
 #----------------------------------------------------------------
 # No warning for missing elts in "system" paths
 #----------------------------------------------------------------
-No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-J-Djava.endorsed.dirs=classes" Main.java
-No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-J-Djava.ext.dirs=classes"      Main.java
+# No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-J-Djava.endorsed.dirs=classes" Main.java
+# No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-J-Djava.ext.dirs=classes"      Main.java
 No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-J-Xbootclasspath/p:classes"    Main.java
 No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-J-Xbootclasspath/a:classes"    Main.java
-No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-J-Xbootclasspath:classes${PS}${BCP}" Main.java
+# No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-J-Xbootclasspath:classes${PS}${BCP}" Main.java
 
 #----------------------------------------------------------------
 # No warning if class path element exists
@@ -121,7 +122,7 @@
 No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-extdirs"        "classes" Main.java
 No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-Xbootclasspath/p:classes" Main.java
 No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-Xbootclasspath/a:classes" Main.java
-No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-Xbootclasspath:classes${PS}${BCP}" Main.java
+# No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path "-Xbootclasspath:classes${PS}${BCP}" Main.java
 
 Sys "$jar" cf classes.jar Main.class
 Sys cp classes.jar classes.war
@@ -131,7 +132,7 @@
 No Warning "$javac" ${TESTTOOLVMOPTS} -Xlint:path -cp ".${PS}classes.zip"     Main.java
 
 #----------------------------------------------------------------
-# Warn if -Xlint is used and if class path element refers to 
+# Warn if -Xlint is used and if class path element refers to
 # regular file which doesn't look like a zip file, but is
 #----------------------------------------------------------------
 Sys cp classes.war classes.foo
@@ -146,7 +147,7 @@
 No Error "$javac" ${TESTTOOLVMOPTS} Main.java
 
 #----------------------------------------------------------------
-# Warn if -Xlint is used and if class path element refers to 
+# Warn if -Xlint is used and if class path element refers to
 # regular file which is not a zip file
 #----------------------------------------------------------------
 Warning "$javac" ${TESTTOOLVMOPTS} -Xlint -cp Main.java Main.java # Main.java is NOT a jar file
@@ -193,8 +194,8 @@
 # Bad Jar file in extdirs and endorseddirs should not be ignored
 #----------------------------------------------------------------
 BadJarFile jars/classesRef.jar
-   Error "$javac" ${TESTTOOLVMOPTS} -Xlint -extdirs      jars Main.java
-   Error "$javac" ${TESTTOOLVMOPTS} -Xlint -endorseddirs jars Main.java
+  Error "$javac" ${TESTTOOLVMOPTS} -Xlint -extdirs      jars Main.java
+  Error "$javac" ${TESTTOOLVMOPTS} -Xlint -endorseddirs jars Main.java
 
 Cleanup
 
--- a/langtools/test/tools/javac/Paths/MineField.sh	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/Paths/MineField.sh	Wed Dec 03 14:25:46 2014 +0000
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -55,7 +55,7 @@
 
 set -u
 
-BCP=`DefaultBootClassPath`
+# BCP=`DefaultBootClassPath`
 
 #----------------------------------------------------------------
 # Prepare the "Minefield"
@@ -91,62 +91,62 @@
 #----------------------------------------------------------------
 # Verify that javac class search order is the same as java's
 #----------------------------------------------------------------
-Failure "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"BadClass" \
-    -J-Djava.endorsed.dirs="GooJar" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \
-    -J-Djava.endorsed.dirs="BadJar${PS}GooZip" \
-    Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/p:"BadClass" \
-    -Djava.endorsed.dirs="GooJar" \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \
-    -Djava.endorsed.dirs="BadJar${PS}GooZip" \
-    Main
+# Failure "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"BadClass" \
+#     -J-Djava.endorsed.dirs="GooJar" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \
+#     -J-Djava.endorsed.dirs="BadJar${PS}GooZip" \
+#     Main.java
+# Failure "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/p:"BadClass" \
+#     -Djava.endorsed.dirs="GooJar" \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \
+#     -Djava.endorsed.dirs="BadJar${PS}GooZip" \
+#     Main
 
 #----------------------------------------------------------------
-Failure "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"GooClass" \
-    -bootclasspath "$BCP${PS}BadZip/Lib.zip" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"BadClass${PS}GooClass" \
-    -bootclasspath "$BCP${PS}GooZip/Lib.zip${PS}BadClass" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"BadJar/Lib.jar" \
-    -Xbootclasspath:"$BCP${PS}GooClass" \
-    Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/p:"GooClass" \
-    -Xbootclasspath:"$BCP${PS}BadZip/Lib.zip" \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/p:"BadClass${PS}GooClass" \
-    -Xbootclasspath:"$BCP${PS}GooZip/Lib.zip${PS}BadClass" \
-    Main
+# Failure "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"GooClass" \
+#     -bootclasspath "$BCP${PS}BadZip/Lib.zip" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"BadClass${PS}GooClass" \
+#     -bootclasspath "$BCP${PS}GooZip/Lib.zip${PS}BadClass" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"BadJar/Lib.jar" \
+#     -Xbootclasspath:"$BCP${PS}GooClass" \
+#     Main.java
+# Failure "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/p:"GooClass" \
+#     -Xbootclasspath:"$BCP${PS}BadZip/Lib.zip" \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/p:"BadClass${PS}GooClass" \
+#     -Xbootclasspath:"$BCP${PS}GooZip/Lib.zip${PS}BadClass" \
+#     Main
 
 #----------------------------------------------------------------
-Failure "$javac" ${TESTTOOLVMOPTS} \
-    -bootclasspath "$BCP${PS}GooZip/Lib.zip" \
-    -Xbootclasspath/p:"BadClass" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -bootclasspath "$BCP${PS}BadZip/Lib.zip" \
-    -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \
-    Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Xbootclasspath:"$BCP${PS}GooClass" \
-    -Xbootclasspath/p:"BadClass" \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Xbootclasspath:"$BCP${PS}BadClass" \
-    -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \
-    Main
+# Failure "$javac" ${TESTTOOLVMOPTS} \
+#     -bootclasspath "$BCP${PS}GooZip/Lib.zip" \
+#     -Xbootclasspath/p:"BadClass" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -bootclasspath "$BCP${PS}BadZip/Lib.zip" \
+#     -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \
+#     Main.java
+# Failure "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath:"$BCP${PS}GooClass" \
+#     -Xbootclasspath/p:"BadClass" \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath:"$BCP${PS}BadClass" \
+#     -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \
+#     Main
 
 #----------------------------------------------------------------
 Failure "$javac" ${TESTTOOLVMOPTS} \
@@ -167,74 +167,74 @@
     Main
 
 #----------------------------------------------------------------
-Failure "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"GooClass" \
-    -J-Djava.endorsed.dirs="BadZip" \
-    -bootclasspath "GooClass${PS}$BCP" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"BadClass" \
-    -J-Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
-    -bootclasspath "BadClass${PS}$BCP" \
-    Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/p:"GooClass" \
-    -Djava.endorsed.dirs="BadZip" \
-    -Xbootclasspath:"GooClass${PS}$BCP" \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/p:"BadClass" \
-    -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
-    -Xbootclasspath:"BadClass${PS}$BCP" \
-    Main
+# Failure "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"GooClass" \
+#     -J-Djava.endorsed.dirs="BadZip" \
+#     -bootclasspath "GooClass${PS}$BCP" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"BadClass" \
+#     -J-Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
+#     -bootclasspath "BadClass${PS}$BCP" \
+#     Main.java
+# Failure "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/p:"GooClass" \
+#     -Djava.endorsed.dirs="BadZip" \
+#     -Xbootclasspath:"GooClass${PS}$BCP" \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/p:"BadClass" \
+#     -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
+#     -Xbootclasspath:"BadClass${PS}$BCP" \
+#     Main
 
 #----------------------------------------------------------------
-Failure "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"GooClass" \
-    -Xbootclasspath:"BadClass${PS}$BCP" \
-    -Xbootclasspath/a:"GooClass" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -Xbootclasspath/p:"BadClass" \
-    -Xbootclasspath:"GooClass${PS}BadClass${PS}$BCP" \
-    -Xbootclasspath/a:"BadClass" \
-    Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/p:"GooClass" \
-    -Xbootclasspath:"BadClass${PS}$BCP" \
-    -Xbootclasspath/a:"GooClass" \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/p:"BadClass" \
-    -Xbootclasspath:"GooClass${PS}BadClass${PS}$BCP" \
-    -Xbootclasspath/a:"BadClass" \
-    Main
+# Failure "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"GooClass" \
+#     -Xbootclasspath:"BadClass${PS}$BCP" \
+#     -Xbootclasspath/a:"GooClass" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -Xbootclasspath/p:"BadClass" \
+#     -Xbootclasspath:"GooClass${PS}BadClass${PS}$BCP" \
+#     -Xbootclasspath/a:"BadClass" \
+#     Main.java
+# Failure "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/p:"GooClass" \
+#     -Xbootclasspath:"BadClass${PS}$BCP" \
+#     -Xbootclasspath/a:"GooClass" \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/p:"BadClass" \
+#     -Xbootclasspath:"GooClass${PS}BadClass${PS}$BCP" \
+#     -Xbootclasspath/a:"BadClass" \
+#     Main
 
 #----------------------------------------------------------------
-Failure "$javac" ${TESTTOOLVMOPTS} \
-    -J-Djava.endorsed.dirs="BadZip" \
-    -Xbootclasspath:"GooClass${PS}$BCP" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -endorseddirs "BadClass${PS}GooZip${PS}BadJar" \
-    -Xbootclasspath:"BadClass${PS}$BCP" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
-    -Xbootclasspath:"BadClass${PS}$BCP" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -J-Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
-    -Xbootclasspath:"BadClass${PS}$BCP" \
-    Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Djava.endorsed.dirs="BadZip" \
-    -Xbootclasspath:"GooClass${PS}$BCP" \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
-    -Xbootclasspath:"BadClass${PS}$BCP" \
-    Main
+# Failure "$javac" ${TESTTOOLVMOPTS} \
+#     -J-Djava.endorsed.dirs="BadZip" \
+#     -Xbootclasspath:"GooClass${PS}$BCP" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -endorseddirs "BadClass${PS}GooZip${PS}BadJar" \
+#     -Xbootclasspath:"BadClass${PS}$BCP" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
+#     -Xbootclasspath:"BadClass${PS}$BCP" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -J-Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
+#     -Xbootclasspath:"BadClass${PS}$BCP" \
+#     Main.java
+# Failure "$java" ${TESTVMOPTS} \
+#     -Djava.endorsed.dirs="BadZip" \
+#     -Xbootclasspath:"GooClass${PS}$BCP" \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \
+#     -Xbootclasspath:"BadClass${PS}$BCP" \
+#     Main
 
 #----------------------------------------------------------------
 Failure "$javac" ${TESTTOOLVMOPTS} \
@@ -245,32 +245,32 @@
     -Xbootclasspath/a:"GooClass${PS}BadClass" \
     -extdirs "BadZip" \
     Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/a:"BadClass" \
-    -Djava.ext.dirs="GooZip" \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Xbootclasspath/a:"GooClass${PS}BadClass" \
-    -Djava.ext.dirs="BadZip" \
-    Main
+# Failure "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/a:"BadClass" \
+#     -Djava.ext.dirs="GooZip" \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath/a:"GooClass${PS}BadClass" \
+#     -Djava.ext.dirs="BadZip" \
+#     Main
 
 #----------------------------------------------------------------
-Failure "$javac" ${TESTTOOLVMOPTS} \
-    -bootclasspath "$BCP${PS}BadJar/Lib.jar" \
-    -J-Djava.ext.dir="GooJar" \
-    Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -bootclasspath "$BCP${PS}GooJar/Lib.jar${PS}BadClass" \
-    -J-Djava.ext.dir="BadJar" \
-    Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Xbootclasspath:"$BCP${PS}BadJar/Lib.jar" \
-    -Djava.ext.dirs="GooJar" \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Xbootclasspath:"$BCP${PS}GooJar/Lib.jar${PS}BadClass" \
-    -Djava.ext.dirs="BadJar" \
-    Main
+# Failure "$javac" ${TESTTOOLVMOPTS} \
+#     -bootclasspath "$BCP${PS}BadJar/Lib.jar" \
+#     -J-Djava.ext.dir="GooJar" \
+#     Main.java
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -bootclasspath "$BCP${PS}GooJar/Lib.jar${PS}BadClass" \
+#     -J-Djava.ext.dir="BadJar" \
+#     Main.java
+# Failure "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath:"$BCP${PS}BadJar/Lib.jar" \
+#     -Djava.ext.dirs="GooJar" \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Xbootclasspath:"$BCP${PS}GooJar/Lib.jar${PS}BadClass" \
+#     -Djava.ext.dirs="BadJar" \
+#     Main
 
 #----------------------------------------------------------------
 Failure "$javac" ${TESTTOOLVMOPTS} \
@@ -285,18 +285,18 @@
     -Djava.ext.dirs="GooZip${PS}BadJar" \
     -classpath "BadZip/Lib.zip" \
     Main.java
-Success "$javac" ${TESTTOOLVMOPTS} \
-    -J-Djava.ext.dirs="GooZip${PS}BadJar" \
-    -classpath "BadZip/Lib.zip" \
-    Main.java
-Failure "$java" ${TESTVMOPTS} \
-    -Djava.ext.dirs="GooClass${PS}BadZip" \
-    -cp "GooZip/Lib.zip${PS}." \
-    Main
-Success "$java" ${TESTVMOPTS} \
-    -Djava.ext.dirs="GooZip${PS}BadJar" \
-    -cp "BadZip/Lib.zip${PS}." \
-    Main
+# Success "$javac" ${TESTTOOLVMOPTS} \
+#     -J-Djava.ext.dirs="GooZip${PS}BadJar" \
+#     -classpath "BadZip/Lib.zip" \
+#     Main.java
+# Failure "$java" ${TESTVMOPTS} \
+#     -Djava.ext.dirs="GooClass${PS}BadZip" \
+#     -cp "GooZip/Lib.zip${PS}." \
+#     Main
+# Success "$java" ${TESTVMOPTS} \
+#     -Djava.ext.dirs="GooZip${PS}BadJar" \
+#     -cp "BadZip/Lib.zip${PS}." \
+#     Main
 
 #----------------------------------------------------------------
 Failure "$javac" ${TESTTOOLVMOPTS} -classpath "BadClass${PS}GooClass" Main.java
@@ -339,27 +339,27 @@
 
 # All other empty path elements are ignored.
 In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -extdirs "" -cp ".." ../Main.java
-In GooJar Failure "$java" ${TESTVMOPTS} -Djava.ext.dirs="" -cp ".." Main
+# In GooJar Failure "$java" ${TESTVMOPTS} -Djava.ext.dirs="" -cp ".." Main
 
 In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -extdirs        "${PS}" -cp ".." ../Main.java
 In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -Djava.ext.dirs="${PS}" -cp ".." ../Main.java
-In GooJar Failure "$java" ${TESTVMOPTS}  -Djava.ext.dirs="${PS}" -cp ".." Main
+# In GooJar Failure "$java" ${TESTVMOPTS}  -Djava.ext.dirs="${PS}" -cp ".." Main
 
 In GooJar Success "$javac" ${TESTTOOLVMOPTS} -extdirs        "." -cp ".." ../Main.java
 In GooJar Success "$javac" ${TESTTOOLVMOPTS} -Djava.ext.dirs="." -cp ".." ../Main.java
-In GooJar Success "$java" ${TESTVMOPTS}  -Djava.ext.dirs="." -cp ".." Main
+# In GooJar Success "$java" ${TESTVMOPTS}  -Djava.ext.dirs="." -cp ".." Main
 
-In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="" -cp ".." ../Main.java
+# In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="" -cp ".." ../Main.java
 In GooJar Failure "$javac" ${TESTTOOLVMOPTS}   -Djava.endorsed.dirs="" -cp ".." ../Main.java
-In GooJar Failure "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="" -cp ".." Main
+# In GooJar Failure "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="" -cp ".." Main
 
-In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="${PS}" -cp ".." ../Main.java
+# In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="${PS}" -cp ".." ../Main.java
 In GooJar Failure "$javac" ${TESTTOOLVMOPTS}   -endorseddirs        "${PS}" -cp ".." ../Main.java
-In GooJar Failure "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="${PS}" -cp ".." Main
+# In GooJar Failure "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="${PS}" -cp ".." Main
 
-In GooJar Success "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="." -cp ".." ../Main.java
+# In GooJar Success "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="." -cp ".." ../Main.java
 In GooJar Success "$javac" ${TESTTOOLVMOPTS}   -Djava.endorsed.dirs="." -cp ".." ../Main.java
-In GooJar Success "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="." -cp ".." Main
+# In GooJar Success "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="." -cp ".." Main
 
 In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/p: -cp ".." ../Main.java
 In GooClass Failure "$java" ${TESTVMOPTS}  -Xbootclasspath/p: -cp ".." Main
@@ -367,11 +367,11 @@
 In GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/p:. -cp ".." ../Main.java
 In GooClass Success "$java" ${TESTVMOPTS}  -Xbootclasspath/p:. -cp ".." Main
 
-In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath:"$BCP" -cp ".." ../Main.java
-In GooClass Failure "$java" ${TESTVMOPTS}  -Xbootclasspath:"$BCP" -cp ".." Main
+# In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath:"$BCP" -cp ".." ../Main.java
+# In GooClass Failure "$java" ${TESTVMOPTS}  -Xbootclasspath:"$BCP" -cp ".." Main
 
-In GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath:"$BCP${PS}." -cp ".." ../Main.java
-In GooClass Success "$java" ${TESTVMOPTS}  -Xbootclasspath:"$BCP${PS}." -cp ".." Main
+# In GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath:"$BCP${PS}." -cp ".." ../Main.java
+# In GooClass Success "$java" ${TESTVMOPTS}  -Xbootclasspath:"$BCP${PS}." -cp ".." Main
 
 In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/a: -cp ".." ../Main.java
 In GooClass Failure "$java" ${TESTVMOPTS}  -Xbootclasspath/a: -cp ".." Main
--- a/langtools/test/tools/javac/Paths/SameJVM.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * Support routines to allow running `javac' or `jar' within the same JVM.
- */
-
-import java.io.*;
-import java.net.*;
-import java.lang.reflect.*;
-
-class SameJVM {
-
-    private static ClassLoader toolsClassLoader() {
-        File javaHome   = new File(System.getProperty("java.home"));
-        File classesDir = new File(javaHome, "classes");
-        File libDir     = new File(javaHome.getParentFile(), "lib");
-        File toolsJar   = new File(libDir, "tools.jar");
-        try {
-            return new URLClassLoader(
-                new URL[] {classesDir.toURL(), toolsJar.toURL()});
-        } catch (MalformedURLException e) { throw new AssertionError(e); }
-    }
-    private static final ClassLoader cl = toolsClassLoader();
-
-    static void javac(String... args) throws Exception {
-        Class c = Class.forName("com.sun.tools.javac.Main", true, cl);
-        int status = (Integer)
-            c.getMethod("compile", new Class[] {String[].class})
-            .invoke(c.newInstance(), new Object[] {args});
-        if (status != 0)
-            throw new Exception("javac failed: status=" + status);
-    }
-
-    static void jar(String... args) throws Exception {
-        Class c = Class.forName("sun.tools.jar.Main", true, cl);
-        Object instance = c.getConstructor(
-            new Class[] {PrintStream.class, PrintStream.class, String.class})
-            .newInstance(System.out, System.err, "jar");
-        boolean result = (Boolean)
-            c.getMethod("run", new Class[] {String[].class})
-            .invoke(instance, new Object[] {args});
-        if (! result)
-            throw new Exception("jar failed");
-    }
-}
--- a/langtools/test/tools/javac/Paths/Util.sh	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/Paths/Util.sh	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -57,15 +57,15 @@
     test "$#" != 2 && Die "Usage: Report success|failure rc"
 
     if   test "$1" = "success" -a "$2" = 0; then
-	echo "PASS: succeeded as expected"
+        echo "PASS: succeeded as expected"
     elif test "$1" = "failure" -a "$2" != 0; then
-	echo "PASS: failed as expected"
+        echo "PASS: failed as expected"
     elif test "$1" = "success" -a "$2" != 0; then
-	Fail "test failed unexpectedly"
+        Fail "test failed unexpectedly"
     elif test "$1" = "failure" -a "$2" = 0; then
-	Fail "test succeeded unexpectedly"
+        Fail "test succeeded unexpectedly"
     else
-	Die "Usage: Report success|failure rc"
+        Die "Usage: Report success|failure rc"
     fi
 }
 
@@ -92,12 +92,12 @@
     test "$#" = 1 -a "$1" = "Line" || Die "Usage: Bottom Line"
 
     if test -n "$failed"; then
-	count=`printf "%s" "$failed" | wc -c | tr -d ' '`
-	echo "FAIL: $count tests failed"
-	exit 1
+        count=`printf "%s" "$failed" | wc -c | tr -d ' '`
+        echo "FAIL: $count tests failed"
+        exit 1
     else
-	echo "PASS: all tests gave expected results"
-	exit 0
+        echo "PASS: all tests gave expected results"
+        exit 0
     fi
 }
 
@@ -105,21 +105,21 @@
     for jarfilename in "$@"; do pwd > "$jarfilename"; done
 }
 
-#----------------------------------------------------------------
-# Usage: BCP=`DefaultBootClassPath`
-# Returns default bootclasspath, discarding non-existent entries
-#----------------------------------------------------------------
-DefaultBootClassPath() {
-    echo 'public class B {public static void main(String[] a) {
-    System.out.println(System.getProperty("sun.boot.class.path"));}}' > B.java
-    "$javac" ${TESTTOOLVMOPTS} B.java
-    _BCP_=""
-    for elt in `"$java" ${TESTVMOPTS} B | tr "${PS}" " "`; do
-	test -r "$elt" -a -n "$elt" && _BCP_="${_BCP_:+${_BCP_}${PS}}${elt}"
-    done
-    rm -f B.java B.class
-    printf "%s" "$_BCP_"	# Don't use echo -- unsafe on Windows
-}
+# #----------------------------------------------------------------
+# # Usage: BCP=`DefaultBootClassPath`
+# # Returns default bootclasspath, discarding non-existent entries
+# #----------------------------------------------------------------
+# DefaultBootClassPath() {
+#     echo 'public class B {public static void main(String[] a) {
+#     System.out.println(System.getProperty("sun.boot.class.path"));}}' > B.java
+#     "$javac" ${TESTTOOLVMOPTS} B.java
+#     _BCP_=""
+#     for elt in `"$java" ${TESTVMOPTS} B | tr "${PS}" " "`; do
+#       test -r "$elt" -a -n "$elt" && _BCP_="${_BCP_:+${_BCP_}${PS}}${elt}"
+#     done
+#     rm -f B.java B.class
+#     printf "%s" "$_BCP_"      # Don't use echo -- unsafe on Windows
+# }
 
 #----------------------------------------------------------------
 # Foil message localization
--- a/langtools/test/tools/javac/T6558476.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/T6558476.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/langtools/test/tools/javac/T6654037.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/T6654037.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,13 +44,12 @@
 public class T6654037 {
 
     public static void main(String[] args) throws Exception {
-        final String bootPath = System.getProperty("sun.boot.class.path"); //NOI18N
         final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
         assert tool != null;
 
         String code = "package test; public class Test {private void test() {Object o = null; boolean b = o != null && o instanceof String;} private Test() {}}";
 
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, Arrays.asList("-bootclasspath", bootPath, "-Xjcov"), null, Arrays.asList(new MyFileObject(code)));
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, Arrays.asList("-Xjcov"), null, Arrays.asList(new MyFileObject(code)));
         CompilationUnitTree cut = ct.parse().iterator().next();
         ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
         MethodTree method = (MethodTree) clazz.getMembers().get(0);
--- a/langtools/test/tools/javac/T6705935.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/T6705935.java	Wed Dec 03 14:25:46 2014 +0000
@@ -41,8 +41,6 @@
 
     public void run() throws Exception {
         File java_home = new File(System.getProperty("java.home"));
-        if (java_home.getName().equals("jre"))
-            java_home = java_home.getParentFile();
 
         JavaCompiler c = ToolProvider.getSystemJavaCompiler();
         try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
--- a/langtools/test/tools/javac/T6725036.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/T6725036.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,13 +26,17 @@
  * @bug 6725036 8016760
  * @summary javac returns incorrect value for lastModifiedTime() when
  *          source is a zip file archive
+ * @library /tools/lib
+ * @build ToolBox
+ * @run main T6725036
  */
 
 import java.io.File;
+import java.io.IOException;
 import java.util.Date;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
-import javax.tools.JavaFileObject;
+import javax.tools.*;
 
 import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.file.RelativePath.RelativeFile;
@@ -49,33 +53,43 @@
     void run() throws Exception {
         RelativeFile TEST_ENTRY_NAME = new RelativeFile("java/lang/String.class");
 
-        File f = new File(System.getProperty("java.home"));
-        if (!f.getName().equals("jre"))
-            f = new File(f, "jre");
-        File rt_jar = new File(new File(f, "lib"), "rt.jar");
+        File testJar = createJar("test.jar", "java.lang.*");
+
+        try (JarFile j = new JarFile(testJar)) {
+            JarEntry je = j.getJarEntry(TEST_ENTRY_NAME.getPath());
+            long jarEntryTime = je.getTime();
 
-        JarFile j = new JarFile(rt_jar);
-        JarEntry je = j.getJarEntry(TEST_ENTRY_NAME.getPath());
-        long jarEntryTime = je.getTime();
+            ZipFileIndexCache zfic = ZipFileIndexCache.getSharedInstance();
+            ZipFileIndex zfi = zfic.getZipFileIndex(testJar, null, false, null, false);
+            long zfiTime = zfi.getLastModified(TEST_ENTRY_NAME);
 
-        ZipFileIndexCache zfic = ZipFileIndexCache.getSharedInstance();
-        ZipFileIndex zfi = zfic.getZipFileIndex(rt_jar, null, false, null, false);
-        long zfiTime = zfi.getLastModified(TEST_ENTRY_NAME);
+            check(je, jarEntryTime, zfi + ":" + TEST_ENTRY_NAME.getPath(), zfiTime);
 
-        check(je, jarEntryTime, zfi + ":" + TEST_ENTRY_NAME.getPath(), zfiTime);
+            Context context = new Context();
+            JavacFileManager fm = new JavacFileManager(context, false, null);
+            ZipFileIndexArchive zfia = new ZipFileIndexArchive(fm, zfi);
+            JavaFileObject jfo =
+                zfia.getFileObject(TEST_ENTRY_NAME.dirname(),
+                                       TEST_ENTRY_NAME.basename());
+            long jfoTime = jfo.getLastModified();
+
+            check(je, jarEntryTime, jfo, jfoTime);
 
-        Context context = new Context();
-        JavacFileManager fm = new JavacFileManager(context, false, null);
-        ZipFileIndexArchive zfia = new ZipFileIndexArchive(fm, zfi);
-        JavaFileObject jfo =
-            zfia.getFileObject(TEST_ENTRY_NAME.dirname(),
-                                   TEST_ENTRY_NAME.basename());
-        long jfoTime = jfo.getLastModified();
+            if (errors > 0)
+                throw new Exception(errors + " occurred");
+        }
+    }
 
-        check(je, jarEntryTime, jfo, jfoTime);
-
-        if (errors > 0)
-            throw new Exception(errors + " occurred");
+    File createJar(String name, String... paths) throws IOException {
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        try (JavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            File f = new File(name);
+            ToolBox tb = new ToolBox();
+            tb.new JarTask(f.getPath())
+                .files(fm, StandardLocation.PLATFORM_CLASS_PATH, paths)
+                .run();
+            return f;
+        }
     }
 
     void check(Object ref, long refTime, Object test, long testTime) {
--- a/langtools/test/tools/javac/T6873845.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/T6873845.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,14 +1,14 @@
-import java.io.*;
-import java.util.*;
-
-import sun.misc.*;
-
 /*
  * @test /nodynamiccopyright/
  * @bug 6873845
  * @summary refine access to symbol file
  */
 
+import java.io.*;
+import java.util.*;
+
+import sun.misc.*;
+
 public class T6873845 {
     public static void main(String... args) throws Exception {
         new T6873845().run();
--- a/langtools/test/tools/javac/annotations/TestAnnotationPackageInfo.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/annotations/TestAnnotationPackageInfo.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -51,7 +51,6 @@
     }
 
     public void run() throws Exception {
-        final String bootPath = System.getProperty("sun.boot.class.path");
         final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
         assert tool != null;
 
@@ -65,9 +64,8 @@
 
         DiagnosticCollector<JavaFileObject> coll = new DiagnosticCollector<JavaFileObject>();
 
-        List<String> options = Arrays.asList("-bootclasspath",  bootPath);
         List<? extends JavaFileObject> files = Arrays.asList(test_java, package_info_java);
-        JavacTask ct = (JavacTask)tool.getTask(null, null, coll, options, null, files);
+        JavacTask ct = (JavacTask)tool.getTask(null, null, coll, null, null, files);
         ct.analyze();
 
         String expectedCode = "compiler.err.annotation.missing.default.value";
--- a/langtools/test/tools/javac/api/6411310/Test.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6410367 6411310
- * @summary FileObject should support user-friendly names via getName()
- */
-
-import java.io.*;
-import java.util.*;
-import java.util.jar.*;
-import java.util.zip.*;
-import javax.tools.*;
-
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Options;
-
-// Test FileObject.getName returned from JavacFileManager and its support classes.
-
-public class Test {
-    public static void main(String... args) throws Exception {
-        new Test().run();
-    }
-
-    Set<String> foundClasses = new TreeSet<String>();
-    Set<String> foundJars = new TreeSet<String>();
-
-    void run() throws Exception {
-        File rt_jar = findRtJar();
-
-        // names for entries to be created in directories and jar files
-        String[] entries = { "p/A.java", "p/A.class", "p/resources/A-1.html" };
-
-        // test various combinations of directories and jar files, intended to
-        // cover all sources of file objects within JavacFileManager's support classes
-
-        test(createFileManager(), createDir("dir", entries), "p", entries);
-        test(createFileManager(), createDir("a b/dir", entries), "p", entries);
-
-        for (boolean useOptimizedZip: new boolean[] { false, true }) {
-            test(createFileManager(useOptimizedZip), createJar("jar", entries), "p", entries);
-            test(createFileManager(useOptimizedZip), createJar("jar jar", entries), "p", entries);
-
-            for (boolean useSymbolFile: new boolean[] { false, true }) {
-                test(createFileManager(useOptimizedZip, useSymbolFile), rt_jar, "java.lang.ref", null);
-            }
-        }
-
-        if (errors > 0)
-            throw new Exception(errors + " errors found");
-
-        // Verify that we hit all the impl classes we intended
-        checkCoverage("classes", foundClasses,
-                "RegularFileObject", "SymbolFileObject", "ZipFileIndexFileObject", "ZipFileObject");
-
-        // Verify that we hit the jar files we intended, specifically ct.sym as well as rt.jar
-        checkCoverage("jar files", foundJars,
-                "ct.sym", "jar", "jar jar", "rt.jar");
-    }
-
-    // use a new file manager for each test
-    void test(StandardJavaFileManager fm, File f, String pkg, String[] entries) throws Exception {
-        System.err.println("Test " + f);
-        try {
-            if (f.isDirectory()) {
-                for (File dir: new File[] { f, f.getAbsoluteFile() }) {
-                    for (String e: entries) {
-                        JavaFileObject fo = fm.getJavaFileObjects(new File(dir, e)).iterator().next();
-                        test(fo, dir, e);
-                    }
-                }
-            }
-
-            fm.setLocation(StandardLocation.CLASS_PATH, Collections.singleton(f));
-            fm.setLocation(StandardLocation.SOURCE_PATH, Collections.singleton(f.getAbsoluteFile()));
-            for (StandardLocation l: EnumSet.of(StandardLocation.CLASS_PATH, StandardLocation.SOURCE_PATH)) {
-                for (JavaFileObject fo: fm.list(l, pkg, EnumSet.allOf(JavaFileObject.Kind.class), true)) {
-                    // we could use fm.getLocation but the following guarantees we preserve the original filename
-                    File dir = (l == StandardLocation.CLASS_PATH ? f : f.getAbsoluteFile());
-                    char sep = (dir.isDirectory() ? File.separatorChar : '/');
-                    String b = fm.inferBinaryName(l, fo);
-                    String e = fo.getKind().extension;
-                    test(fo, dir, b.replace('.', sep) + e);
-                }
-            }
-        } finally {
-            fm.close();
-        }
-    }
-
-    void test(JavaFileObject fo, File dir, String p) {
-        System.err.println("Test: " + fo);
-        String expect = dir.isDirectory() ? new File(dir, p).getPath() : (dir.getPath() + "(" + p + ")");
-        String found = fo.getName();
-        // if ct.sym is found, replace it with the equivalent rt.jar
-        String found2 = found.replaceAll("lib([\\\\/])ct.sym\\(META-INF/sym/rt.jar/", "jre$1lib$1rt.jar(");
-        if (!expect.equals(found2)) {
-            System.err.println("expected: " + expect);
-            System.err.println("   found: " + found);
-            if (!found.equals(found2))
-                System.err.println("  found2: " + found2);
-            error("Failed: " + fo);
-        }
-
-        // record the file object class name for coverage checks later
-        foundClasses.add(fo.getClass().getSimpleName());
-
-        if (found.contains("(")) {
-            // record access to the jar file for coverage checks later
-            foundJars.add(new File(found.substring(0, found.indexOf("("))).getName());
-        }
-    }
-
-    void checkCoverage(String label, Set<String> found, String... expect) throws Exception {
-        Set<String> e = new TreeSet<String>(Arrays.asList(expect));
-        if (!found.equals(e)) {
-            e.removeAll(found);
-            throw new Exception("expected " + label + " not used: " + e);
-        }
-    }
-
-    JavacFileManager createFileManager() {
-        return createFileManager(false, false);
-    }
-
-    JavacFileManager createFileManager(boolean useOptimizedZip) {
-        return createFileManager(useOptimizedZip, false);
-    }
-
-    JavacFileManager createFileManager(boolean useOptimizedZip, boolean useSymbolFile) {
-        Context c = new Context();
-        Options options = Options.instance(c);
-
-        options.put("useOptimizedZip", Boolean.toString(useOptimizedZip));
-
-        if (!useSymbolFile) {
-            options.put("ignore.symbol.file", "true");
-        }
-        return new JavacFileManager(c, false, null);
-    }
-
-    File createDir(String name, String... entries) throws Exception {
-        File dir = new File(name);
-        if (!dir.mkdirs())
-            throw new Exception("cannot create directories " + dir);
-        for (String e: entries) {
-            writeFile(new File(dir, e), e);
-        }
-        return dir;
-    }
-
-    File createJar(String name, String... entries) throws IOException {
-        File jar = new File(name);
-        OutputStream out = new FileOutputStream(jar);
-        try {
-            JarOutputStream jos = new JarOutputStream(out);
-            for (String e: entries) {
-                jos.putNextEntry(new ZipEntry(e));
-                jos.write(e.getBytes());
-            }
-            jos.close();
-        } finally {
-            out.close();
-        }
-        return jar;
-    }
-
-    File findRtJar() throws Exception {
-        File java_home = new File(System.getProperty("java.home"));
-        if (java_home.getName().equals("jre"))
-            java_home = java_home.getParentFile();
-        File rt_jar = new File(new File(new File(java_home, "jre"), "lib"), "rt.jar");
-        if (!rt_jar.exists())
-            throw new Exception("can't find rt.jar");
-        return rt_jar;
-    }
-
-    byte[] read(InputStream in) throws IOException {
-        byte[] data = new byte[1024];
-        int offset = 0;
-        try {
-            int n;
-            while ((n = in.read(data, offset, data.length - offset)) != -1) {
-                offset += n;
-                if (offset == data.length)
-                    data = Arrays.copyOf(data, 2 * data.length);
-            }
-        } finally {
-            in.close();
-        }
-        return Arrays.copyOf(data, offset);
-    }
-
-    void writeFile(File f, String s) throws IOException {
-        f.getParentFile().mkdirs();
-        FileWriter out = new FileWriter(f);
-        try {
-            out.write(s);
-        } finally {
-            out.close();
-        }
-    }
-
-    void error(String msg) {
-        System.err.println(msg);
-        errors++;
-    }
-
-    int errors;
-}
--- a/langtools/test/tools/javac/api/6598108/T6598108.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/api/6598108/T6598108.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,10 +43,9 @@
 
 public class T6598108 {
     public static void main(String[] args) throws Exception {
-        final String bootPath = System.getProperty("sun.boot.class.path"); //NOI18N
         final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
         assert tool != null;
-        final JavacTask ct = (JavacTask)tool.getTask(null, null, null, Arrays.asList("-bootclasspath",  bootPath), null, Arrays.asList(new MyFileObject()));
+        final JavacTask ct = (JavacTask)tool.getTask(null, null, null, null, null, Arrays.asList(new MyFileObject()));
 
         CompilationUnitTree cut = ct.parse().iterator().next();
         TreePath tp = new TreePath(new TreePath(cut), cut.getTypeDecls().get(0));
--- a/langtools/test/tools/javac/api/6608214/T6608214.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/api/6608214/T6608214.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,8 +47,7 @@
             }
         };
         List<? extends JavaFileObject> files = Arrays.asList(sfo);
-        String bootPath = System.getProperty("sun.boot.class.path");
-        List<String> opts = Arrays.asList("-bootclasspath",  bootPath, "-Xjcov");
+        List<String> opts = Arrays.asList("-Xjcov");
         JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
         JavacTask ct = (JavacTask)tool.getTask(null, null, null,opts,null,files);
         ct.analyze();
--- a/langtools/test/tools/javac/api/T6412669.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/api/T6412669.java	Wed Dec 03 14:25:46 2014 +0000
@@ -44,28 +44,9 @@
         File testSrc = new File(System.getProperty("test.src", "."));
         File testClasses = new File(System.getProperty("test.classes", "."));
 
-        // Determine location of necessary tools classes. Assume all in one place.
-        // Likely candidates are typically tools.jar (when testing JDK build)
-        // or build/classes or dist/javac.jar (when testing langtools, using -Xbootclasspath/p:)
-        File toolsClasses;
-        URL u = T6412669.class.getClassLoader().getResource("com/sun/source/util/JavacTask.class");
-        switch (u.getProtocol()) {
-            case "file":
-                toolsClasses = new File(u.toURI());
-                break;
-            case "jar":
-                String s = u.getFile(); // will be file:path!/entry
-                int sep = s.indexOf("!");
-                toolsClasses = new File(new URI(s.substring(0, sep)));
-                break;
-            default:
-                throw new AssertionError("Cannot locate tools classes");
-        }
-        //System.err.println("toolsClasses: " + toolsClasses);
-
         JavacTool tool = JavacTool.create();
         try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
-            fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(testClasses, toolsClasses));
+            fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(testClasses));
             Iterable<? extends JavaFileObject> files =
                 fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6412669.class.getName()+".java")));
             String[] opts = { "-proc:only", "-processor", T6412669.class.getName()};
--- a/langtools/test/tools/javac/api/T6430241.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/api/T6430241.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,238 +1,255 @@
-    /*
-     * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
-     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-     *
-     * This code is free software; you can redistribute it and/or modify it
-     * under the terms of the GNU General Public License version 2 only, as
-     * published by the Free Software Foundation.
-     *
-     * This code is distributed in the hope that it will be useful, but WITHOUT
-     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-     * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-     * version 2 for more details (a copy is included in the LICENSE file that
-     * accompanied this code).
-     *
-     * You should have received a copy of the GNU General Public License version
-     * 2 along with this work; if not, write to the Free Software Foundation,
-     * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-     *
-     * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-     * or visit www.oracle.com if you need additional information or have any
-     * questions.
-     */
+/*
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6430241
+ * @summary Hard to disable symbol file feature through API
+ * @library /tools/lib
+ * @build ToolBox
+ * @run main T6430241
+ */
+
+import java.io.*;
+import java.util.*;
+
+import javax.tools.*;
+
+import com.sun.source.util.JavacTask;
+import com.sun.tools.javac.api.JavacTool;
+import com.sun.tools.javac.file.JavacFileManager;
+import com.sun.tools.javac.util.Context;
+
+public class T6430241 {
+    public static void main(String... args) throws Exception {
+        new T6430241().run();
+    }
+
+    void run() throws Exception {
+        setup();
+        testCommandLine();
+        testSimpleAPI();
+        testTaskAPI();
+
+        if (errors > 0)
+            throw new Exception(errors + " errors found");
+    }
+
+    void setup() throws Exception {
+        classesDir = new File("classes");
+        classesDir.mkdirs();
+
+        emptyDir = new File("empty");
+        emptyDir.mkdirs();
+
+        bootClassPath = createJar().getPath();
 
-    /*
-     * @test
-     * @bug 6430241
-     * @summary Hard to disable symbol file feature through API
-     */
+        File srcDir = new File("src");
+        String test = "import sun.misc.Unsafe; class Test { }";
+        testFile = writeFile(srcDir, "Test.java", test);
+    }
+
+    //----- tests for command line invocation
+
+    void testCommandLine() throws Exception {
+        testCommandLine(true);
+        testCommandLine(false, "-Xbootclasspath/p:" + emptyDir);
+        testCommandLine(false, "-Xbootclasspath:" + bootClassPath);
+        testCommandLine(false, "-Xbootclasspath/a:" + emptyDir);
+        testCommandLine(false, "-XDignore.symbol.file");
+        System.err.println();
+    }
+
+    void testCommandLine(boolean expectWarnings, String... opts) throws Exception {
+        System.err.println("test command line: " + Arrays.asList(opts));
+
+        String[] args = initArgs(opts);
+
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        int rc = com.sun.tools.javac.Main.compile(args, pw);
+        String out = showOutput(sw.toString());
+
+        checkCompilationOK(rc);
+        checkOutput(out, expectWarnings);
+    }
+
+    //----- tests for simple API invocation
 
-    import java.io.*;
-    import java.util.*;
-    import javax.tools.*;
+    void testSimpleAPI() {
+        testSimpleAPI(true);
+        testSimpleAPI(false, "-Xbootclasspath/p:" + emptyDir);
+        testSimpleAPI(false, "-Xbootclasspath:" + bootClassPath);
+        testSimpleAPI(false, "-Xbootclasspath/a:" + emptyDir);
+        testSimpleAPI(false, "-XDignore.symbol.file");
+        System.err.println();
+    }
+
+    void testSimpleAPI(boolean expectWarnings, String... opts) {
+        System.err.println("test simple API: " + Arrays.asList(opts));
+
+        String[] args = initArgs(opts);
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        PrintStream ps = new PrintStream(baos);
 
-    import com.sun.source.util.JavacTask;
-    import com.sun.tools.javac.api.JavacTool;
+        JavacTool tool = JavacTool.create();
+        int rc = tool.run(null, null, ps, args);
+
+        String out = showOutput(baos.toString());
 
-    public class T6430241 {
-        public static void main(String... args) throws Exception {
-            new T6430241().run();
+        checkCompilationOK(rc);
+        checkOutput(out, expectWarnings);
+    }
+
+    //----- tests for CompilationTask API invocation
+
+    void testTaskAPI() throws Exception {
+        List<File> bcp = new ArrayList<File>();
+        for (String f: bootClassPath.split(File.pathSeparator)) {
+            if (!f.isEmpty())
+                bcp.add(new File(f));
         }
 
-        void run() throws Exception {
-            setup();
-            testCommandLine();
-            testSimpleAPI();
-            testTaskAPI();
+        testTaskAPI(true, null);
+        testTaskAPI(false, bcp);
+        System.err.println();
+    }
 
-            if (errors > 0)
-                throw new Exception(errors + " errors found");
-        }
-
-        void setup() throws Exception {
-            classesDir = new File("classes");
-            classesDir.mkdirs();
-
-            emptyDir = new File("empty");
-            emptyDir.mkdirs();
-
-            bootClassPath = System.getProperty("sun.boot.class.path");
+    void testTaskAPI(boolean expectWarnings, Iterable<? extends File> pcp) throws Exception {
+        System.err.println("test task API: " + pcp);
 
-            File srcDir = new File("src");
-            String test = "import sun.misc.Unsafe; class Test { }";
-            testFile = writeFile(srcDir, "Test.java", test);
-        }
-
-        //----- tests for command line invocation
+        JavacTool tool = JavacTool.create();
+        try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
 
-        void testCommandLine() throws Exception {
-            testCommandLine(true);
-            testCommandLine(true,  "-Xbootclasspath/p:" + emptyDir);
-            testCommandLine(false, "-Xbootclasspath:" + bootClassPath);
-            testCommandLine(true,  "-Xbootclasspath/a:" + emptyDir);
-            testCommandLine(false, "-XDignore.symbol.file");
-            System.err.println();
-        }
+            if (pcp != null)
+                fm.setLocation(StandardLocation.PLATFORM_CLASS_PATH, pcp);
 
-        void testCommandLine(boolean expectWarnings, String... opts) throws Exception {
-            System.err.println("test command line: " + Arrays.asList(opts));
-
-            String[] args = initArgs(opts);
+            Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(testFile);
 
             StringWriter sw = new StringWriter();
             PrintWriter pw = new PrintWriter(sw);
-            int rc = com.sun.tools.javac.Main.compile(args, pw);
+            JavacTask task = tool.getTask(pw, fm, null, null, null, files);
+            boolean ok = task.call();
             String out = showOutput(sw.toString());
 
-            checkCompilationOK(rc);
-            checkOutput(out, expectWarnings);
-        }
-
-        //----- tests for simple API invocation
-
-        void testSimpleAPI() {
-            testSimpleAPI(true);
-            testSimpleAPI(true,  "-Xbootclasspath/p:" + emptyDir);
-            testSimpleAPI(false, "-Xbootclasspath:" + bootClassPath);
-            testSimpleAPI(true,  "-Xbootclasspath/a:" + emptyDir);
-            testSimpleAPI(false, "-XDignore.symbol.file");
-            System.err.println();
-        }
-
-        void testSimpleAPI(boolean expectWarnings, String... opts) {
-            System.err.println("test simple API: " + Arrays.asList(opts));
-
-            String[] args = initArgs(opts);
-
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            PrintStream ps = new PrintStream(baos);
-
-            JavacTool tool = JavacTool.create();
-            int rc = tool.run(null, null, ps, args);
-
-            String out = showOutput(baos.toString());
-
-            checkCompilationOK(rc);
+            checkCompilationOK(ok);
             checkOutput(out, expectWarnings);
         }
-
-        //----- tests for CompilationTask API invocation
+    }
 
-        void testTaskAPI() throws Exception {
-            List<File> bcp = new ArrayList<File>();
-            for (String f: bootClassPath.split(File.pathSeparator)) {
-                if (!f.isEmpty())
-                    bcp.add(new File(f));
-            }
+    //----- utility methods
 
-            testTaskAPI(true, null);
-            testTaskAPI(false, bcp);
-            System.err.println();
+    File createJar() throws IOException {
+        File f = new File("test.jar");
+        try (JavaFileManager fm = new JavacFileManager(new Context(), false, null)) {
+            ToolBox tb = new ToolBox();
+            tb.new JarTask(f.getPath())
+                .files(fm, StandardLocation.PLATFORM_CLASS_PATH, "java.lang.*", "sun.misc.*")
+                .run();
         }
-
-        void testTaskAPI(boolean expectWarnings, Iterable<? extends File> pcp) throws Exception {
-            System.err.println("test task API: " + pcp);
-
-            JavacTool tool = JavacTool.create();
-            try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
-
-                if (pcp != null)
-                    fm.setLocation(StandardLocation.PLATFORM_CLASS_PATH, pcp);
-
-                Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(testFile);
+        return f;
+    }
 
-                StringWriter sw = new StringWriter();
-                PrintWriter pw = new PrintWriter(sw);
-                JavacTask task = tool.getTask(pw, fm, null, null, null, files);
-                boolean ok = task.call();
-                String out = showOutput(sw.toString());
-
-                checkCompilationOK(ok);
-                checkOutput(out, expectWarnings);
-            }
+    /**
+     * Create a file with given content.
+     */
+    File writeFile(File dir, String path, String content) throws IOException {
+        File f = new File(dir, path);
+        f.getParentFile().mkdirs();
+        FileWriter out = new FileWriter(f);
+        try {
+            out.write(content);
+        } finally {
+            out.close();
         }
-
-        //----- utility methods
+        return f;
+    }
 
-        /**
-         * Create a file with given content.
-         */
-        File writeFile(File dir, String path, String content) throws IOException {
-            File f = new File(dir, path);
-            f.getParentFile().mkdirs();
-            FileWriter out = new FileWriter(f);
-            try {
-                out.write(content);
-            } finally {
-                out.close();
-            }
-            return f;
-        }
+    /**
+     * Initialize args for compilation with given opts.
+     * @return opts -d classesDir testFile
+     */
+    String[] initArgs(String[] opts) {
+        List<String> args = new ArrayList<String>();
+        args.addAll(Arrays.asList(opts));
+        args.add("-d");
+        args.add(classesDir.getPath());
+        args.add(testFile.getPath());
+        return args.toArray(new String[args.size()]);
+    }
 
-        /**
-         * Initialize args for compilation with given opts.
-         * @return opts -d classesDir testFile
-         */
-        String[] initArgs(String[] opts) {
-            List<String> args = new ArrayList<String>();
-            args.addAll(Arrays.asList(opts));
-            args.add("-d");
-            args.add(classesDir.getPath());
-            args.add(testFile.getPath());
-            return args.toArray(new String[args.size()]);
-        }
+    /**
+     * Show output from compilation if non empty.
+     */
+    String showOutput(String out) {
+        if (!out.isEmpty())
+            System.err.println(out);
+        return out;
+    }
 
-        /**
-         * Show output from compilation if non empty.
-         */
-        String showOutput(String out) {
-            if (!out.isEmpty())
-                System.err.println(out);
-            return out;
-        }
+    /**
+     * Verify compilation succeeded.
+     */
+    void checkCompilationOK(boolean ok) {
+        if (!ok)
+            error("compilation failed");
+    }
 
-        /**
-         * Verify compilation succeeeded.
-         */
-        void checkCompilationOK(boolean ok) {
-            if (!ok)
-                error("compilation failed");
-        }
+    /**
+     * Verify compilation succeeded.
+     */
+    void checkCompilationOK(int rc) {
+        if (rc != 0)
+            error("compilation failed, rc: " + rc);
+    }
 
-        /**
-         * Verify compilation succeeeded.
-         */
-        void checkCompilationOK(int rc) {
-            if (rc != 0)
-                error("compilation failed, rc: " + rc);
+    /**
+     * Check whether output contains warnings if and only if warnings
+     * are expected.
+     */
+    void checkOutput(String out, boolean expectWarnings) {
+        boolean foundWarnings = out.contains("warning");
+        if (foundWarnings) {
+            if (!expectWarnings)
+                error("unexpected warnings found");
+        } else {
+            if (expectWarnings)
+                error("expected warnings not found");
         }
+    }
 
-        /**
-         * Check whether output contains warnings if and only if warnings
-         * are expected.
-         */
-        void checkOutput(String out, boolean expectWarnings) {
-            boolean foundWarnings = out.contains("warning");
-            if (foundWarnings) {
-                if (!expectWarnings)
-                    error("unexpected warnings found");
-            } else {
-                if (expectWarnings)
-                    error("expected warnings not found");
-            }
-        }
+    /**
+     * Report an error.
+     */
+    void error(String msg) {
+        System.err.println("error: " + msg);
+        errors++;
+    }
 
-        /**
-         * Report an error.
-         */
-        void error(String msg) {
-            System.err.println("error: " + msg);
-            errors++;
-        }
-
-        String bootClassPath;
-        File classesDir;
-        File emptyDir;
-        File testFile;
-        int errors;
-    }
+    String bootClassPath;
+    File classesDir;
+    File emptyDir;
+    File testFile;
+    int errors;
+}
--- a/langtools/test/tools/javac/api/T6877206.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/api/T6877206.java	Wed Dec 03 14:25:46 2014 +0000
@@ -52,8 +52,6 @@
     Set<String> foundJars = new TreeSet<String>();
 
     void run() throws Exception {
-        File rt_jar = findRtJar();
-
         // names for entries to be created in directories and jar files
         String[] entries = { "p/A.class", "p/resources/A-1.jpg" };
 
@@ -66,19 +64,14 @@
         for (boolean useOptimizedZip: new boolean[] { false, true }) {
             test(createFileManager(useOptimizedZip), createJar("jar", entries), "p", entries.length);
             test(createFileManager(useOptimizedZip), createJar("jar jar", entries), "p", entries.length);
-
-            for (boolean useSymbolFile: new boolean[] { false, true }) {
-                test(createFileManager(useOptimizedZip, useSymbolFile), rt_jar, "java.lang.ref", -1);
-            }
         }
 
-        // Verify that we hit all the impl classes we intended
+        // Verify that we hit the files we intended
         checkCoverage("classes", foundClasses,
-                "RegularFileObject", "SymbolFileObject", "ZipFileIndexFileObject", "ZipFileObject");
+                "RegularFileObject", "ZipFileIndexFileObject", "ZipFileObject");
 
-        // Verify that we hit the jar files we intended, specifically ct.sym as well as rt.jar
-        checkCoverage("jar files", foundJars,
-                "ct.sym", "jar", "jar jar", "rt.jar");
+        // Verify that we hit the jar files we intended
+        checkCoverage("jar files", foundJars, "jar", "jar jar");
     }
 
     // use a new file manager for each test
@@ -201,16 +194,6 @@
         return jar;
     }
 
-    File findRtJar() throws Exception {
-        File java_home = new File(System.getProperty("java.home"));
-        if (java_home.getName().equals("jre"))
-            java_home = java_home.getParentFile();
-        File rt_jar = new File(new File(new File(java_home, "jre"), "lib"), "rt.jar");
-        if (!rt_jar.exists())
-            throw new Exception("can't find rt.jar");
-        return rt_jar;
-    }
-
     byte[] read(InputStream in) throws IOException {
         byte[] data = new byte[1024];
         int offset = 0;
--- a/langtools/test/tools/javac/api/TestJavacTaskScanner.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/api/TestJavacTaskScanner.java	Wed Dec 03 14:25:46 2014 +0000
@@ -89,7 +89,7 @@
         System.out.println("#parseTypeElements: " + numParseTypeElements);
         System.out.println("#allMembers: " + numAllMembers);
 
-        check(numTokens, "#Tokens", 1222);
+        check(numTokens, "#Tokens", 1054);
         check(numParseTypeElements, "#parseTypeElements", 158);
         check(numAllMembers, "#allMembers", 52);
     }
@@ -138,30 +138,10 @@
     public StandardJavaFileManager getLocalFileManager(JavaCompiler tool,
                                                         DiagnosticListener<JavaFileObject> dl,
                                                         Charset encoding) {
-        File javac_classes;
-        try {
-            final String javacMainClass = "com/sun/tools/javac/Main.class";
-            URL url = getClass().getClassLoader().getResource(javacMainClass);
-            if (url == null)
-                throw new Error("can't locate javac classes");
-            URI uri = url.toURI();
-            String scheme = uri.getScheme();
-            String ssp = uri.getSchemeSpecificPart();
-            if (scheme.equals("jar")) {
-                javac_classes = new File(new URI(ssp.substring(0, ssp.indexOf("!/"))));
-            } else if (scheme.equals("file")) {
-                javac_classes = new File(ssp.substring(0, ssp.indexOf(javacMainClass)));
-            } else
-                throw new Error("unknown URL: " + url);
-        } catch (URISyntaxException e) {
-            throw new Error(e);
-        }
-        System.err.println("javac_classes: " + javac_classes);
-
         StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, encoding);
         try {
             fm.setLocation(SOURCE_PATH,  Arrays.asList(test_src));
-            fm.setLocation(CLASS_PATH,   join(test_class_path, Arrays.asList(javac_classes)));
+            fm.setLocation(CLASS_PATH,   test_class_path);
             fm.setLocation(CLASS_OUTPUT, Arrays.asList(test_classes));
         } catch (IOException e) {
             throw new AssertionError(e);
--- a/langtools/test/tools/javac/api/TestSearchPaths.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/api/TestSearchPaths.java	Wed Dec 03 14:25:46 2014 +0000
@@ -108,6 +108,7 @@
 
     void testClassOutput() throws IOException {
         String test = "testClassOutput";
+        System.err.println("test: " + test);
 
         for (int i = 1; i <= 5; i++) {
             File classes = createDir(test + "/" + i + "/classes");
@@ -133,6 +134,7 @@
 
     void testClassPath() throws IOException {
         String test = "testClassPath";
+        System.err.println("test: " + test);
 
         for (int i = 1; i <= 5; i++) {
             File classes = createDir(test + "/" + i + "/classes");
@@ -159,10 +161,12 @@
         }
 
         tested.add(CLASS_PATH);
+        System.err.println();
     }
 
     void testSourcePath() throws IOException {
         String test = "testSourcePath";
+        System.err.println("test: " + test);
         setLocation(CLASS_PATH); // empty
 
         for (int i = 1; i <= 5; i++) {
@@ -188,10 +192,12 @@
         }
 
         tested.add(SOURCE_PATH);
+        System.err.println();
     }
 
     void testPlatformClassPath() throws IOException {
         String test = "testPlatformClassPath";
+        System.err.println("test: " + test);
 
         List<File> defaultPath = getLocation(PLATFORM_CLASS_PATH);
         StringBuilder sb = new StringBuilder();
@@ -205,7 +211,10 @@
         setLocation(CLASS_PATH); // empty
         setLocation(SOURCE_PATH); // empty
 
-        for (int i = 1; i <= 10; i++) {
+        // FIXME: temporarily exclude cases referring to default bootclasspath
+        // for (int i = 1; i <= 10; i++) {
+        int[] cases = new int[] { 1, 2, 4, 5, 6, 7 };
+        for (int i : cases) {
             File classes = createDir(test + "/" + i + "/classes");
             File testJars = createDir(test + "/" + i + "/testJars");
             File testClasses = createDir(test + "/" + i + "/testClasses");
@@ -302,10 +311,14 @@
         }
 
         tested.add(PLATFORM_CLASS_PATH);
+        System.err.println();
     }
 
     void testAnnotationProcessorPath() throws IOException {
         String test = "testAnnotationProcessorPath";
+        System.err.println("test: " + test);
+
+        fileManager.setLocation(PLATFORM_CLASS_PATH, null);
 
         String template =
                 "import java.util.*;\n"
@@ -348,10 +361,12 @@
         }
 
         tested.add(ANNOTATION_PROCESSOR_PATH);
+        System.err.println();
     }
 
     void testSourceOutput() throws IOException {
         String test = "testAnnotationProcessorPath";
+        System.err.println("test: " + test);
 
         String source =
                 "import java.io.*;\n"
@@ -407,10 +422,12 @@
             checkFile(CLASS_OUTPUT, "G" + i + ".class");
         }
         tested.add(SOURCE_OUTPUT);
+        System.err.println();
     }
 
     void testNativeHeaderOutput() throws IOException {
         String test = "testNativeHeaderOutput";
+        System.err.println("test: " + test);
 
         for (int i = 1; i <= 5; i++) {
             File classes = createDir(test + "/" + i + "/classes");
@@ -433,6 +450,7 @@
         }
 
         tested.add(StandardLocation.NATIVE_HEADER_OUTPUT);
+        System.err.println();
     }
 
     List<String> getOptions(String... args) {
--- a/langtools/test/tools/javac/diags/CheckResourceKeys.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/diags/CheckResourceKeys.java	Wed Dec 03 14:25:46 2014 +0000
@@ -282,7 +282,8 @@
             // file names
             "ct.sym",
             "rt.jar",
-            "tools.jar",
+            "jfxrt.jar",
+            "bootmodules.jimage",
             // -XD option names
             "process.packages",
             "ignore.symbol.file",
--- a/langtools/test/tools/javac/diags/examples/NotInProfile.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/NotInProfile.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/langtools/test/tools/javac/lib/CompileFail.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/lib/CompileFail.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,7 +37,6 @@
 
         List<String> javacArgs = new ArrayList<>();
         javacArgs.addAll(Arrays.asList(
-            "-bootclasspath", System.getProperty("sun.boot.class.path"),
             "-d", "."
         ));
 
--- a/langtools/test/tools/javac/nio/compileTest/CompileTest.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * @test
- * @bug 6906175 6915476 6915497 7006564
- * @summary Path-based JavaFileManager
- * @compile -g CompileTest.java HelloPathWorld.java
- * @run main CompileTest
- */
-
-import java.io.*;
-import java.nio.file.*;
-import java.util.*;
-import java.util.jar.*;
-import javax.tools.*;
-
-import com.sun.tools.javac.nio.*;
-import com.sun.tools.javac.util.Context;
-import java.nio.file.spi.FileSystemProvider;
-
-
-public class CompileTest {
-    public static void main(String[] args) throws Exception {
-        new CompileTest().run();
-    }
-
-    public void run() throws Exception {
-        File rtDir = new File("rt.dir");
-        File javaHome = new File(System.getProperty("java.home"));
-        if (javaHome.getName().equals("jre"))
-            javaHome = javaHome.getParentFile();
-        File rtJar = new File(new File(new File(javaHome, "jre"), "lib"), "rt.jar");
-        expand(rtJar, rtDir);
-
-        String[] rtDir_opts = {
-            "-bootclasspath", rtDir.toString(),
-            "-classpath", "",
-            "-sourcepath", "",
-            "-extdirs", ""
-        };
-        test(rtDir_opts, "HelloPathWorld");
-
-        if (isJarFileSystemAvailable()) {
-            String[] rtJar_opts = {
-                "-bootclasspath", rtJar.toString(),
-                "-classpath", "",
-                "-sourcepath", "",
-                "-extdirs", ""
-            };
-            test(rtJar_opts, "HelloPathWorld");
-
-            String[] default_opts = { };
-            test(default_opts, "HelloPathWorld");
-
-            // finally, a non-trivial program
-            test(default_opts, "CompileTest");
-        } else
-            System.err.println("jar file system not available: test skipped");
-    }
-
-    void test(String[] opts, String className) throws Exception {
-        count++;
-        System.err.println("Test " + count + " " + Arrays.asList(opts) + " " + className);
-        Path testSrcDir = Paths.get(System.getProperty("test.src"));
-        Path testClassesDir = Paths.get(System.getProperty("test.classes"));
-        Path classes = Files.createDirectory(Paths.get("classes." + count));
-
-        Context ctx = new Context();
-        PathFileManager fm = new JavacPathFileManager(ctx, true, null);
-        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
-        List<String> options = new ArrayList<String>();
-        options.addAll(Arrays.asList(opts));
-        options.addAll(Arrays.asList(
-                "-verbose", "-XDverboseCompilePolicy",
-                "-d", classes.toString(),
-                "-g"
-        ));
-        Iterable<? extends JavaFileObject> compilationUnits =
-                fm.getJavaFileObjects(testSrcDir.resolve(className + ".java"));
-        StringWriter sw = new StringWriter();
-        PrintWriter out = new PrintWriter(sw);
-        JavaCompiler.CompilationTask t =
-                compiler.getTask(out, fm, null, options, null, compilationUnits);
-        boolean ok = t.call();
-        System.err.println(sw.toString());
-        if (!ok) {
-            throw new Exception("compilation failed");
-        }
-
-        File expect = new File("classes." + count + "/" + className + ".class");
-        if (!expect.exists())
-            throw new Exception("expected file not found: " + expect);
-        // Note that we explicitly specify -g for compiling both the actual class and the expected class.
-        // This isolates the expected class from javac options that might be given to jtreg.
-        long expectedSize = new File(testClassesDir.toString(), className + ".class").length();
-        long actualSize = expect.length();
-        if (expectedSize != actualSize)
-            throw new Exception("wrong size found: " + actualSize + "; expected: " + expectedSize);
-    }
-
-    boolean isJarFileSystemAvailable() {
-        boolean result = false;
-        for (FileSystemProvider fsp: FileSystemProvider.installedProviders()) {
-            String scheme = fsp.getScheme();
-            System.err.println("Provider: " + scheme + " " + fsp);
-            if (scheme.equalsIgnoreCase("jar") || scheme.equalsIgnoreCase("zip"))
-                result = true;
-        }
-        return result;
-    }
-
-    void expand(File jar, File dir) throws IOException {
-        JarFile jarFile = new JarFile(jar);
-        try {
-            Enumeration<JarEntry> entries = jarFile.entries();
-            while (entries.hasMoreElements()) {
-                JarEntry je = entries.nextElement();
-                if (!je.isDirectory()) {
-                    copy(jarFile.getInputStream(je), new File(dir, je.getName()));
-                }
-            }
-        } finally {
-            jarFile.close();
-        }
-    }
-
-    void copy(InputStream in, File dest) throws IOException {
-        dest.getParentFile().mkdirs();
-        OutputStream out = new BufferedOutputStream(new FileOutputStream(dest));
-        try {
-            byte[] data = new byte[8192];
-            int n;
-            while ((n = in.read(data, 0, data.length)) > 0)
-                out.write(data, 0, n);
-        } finally {
-            out.close();
-            in.close();
-        }
-    }
-
-    void error(String message) {
-        System.err.println("Error: " + message);
-        errors++;
-    }
-
-    int errors;
-    int count;
-}
--- a/langtools/test/tools/javac/nio/compileTest/HelloPathWorld.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-class HelloPathWorld {
-    public static void main(String... args) {
-        System.out.println("Hello World!");
-    }
-}
--- a/langtools/test/tools/javac/processing/model/testgetallmembers/Main.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/processing/model/testgetallmembers/Main.java	Wed Dec 03 14:25:46 2014 +0000
@@ -59,10 +59,6 @@
     static Elements elements;
 
     public static void main(String[] args) throws Exception {
-        if (haveAltRt()) {
-            System.out.println("Warning: alt-rt.jar detected, test skipped");
-            return;
-        }
         JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
         try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
             fm.setLocation(CLASS_PATH, Collections.<File>emptyList());
@@ -126,23 +122,4 @@
                 throw new AssertionError("Too few nested classes in PLATFORM_CLASS_PATH ;-)");
         }
     }
-    /*
-     * If -XX:+AggressiveOpts has been used to test, the option currently
-     * instructs the VM to prepend alt-rt.jar onto the bootclasspath. This
-     * overrides the default TreeMap implemation in rt.jar causing symbol
-     * resolution problems (caused by inconsistent inner class), although
-     * alt-rt.jar is being eliminated, we have this sanity check to detect this
-     * case and skip the test.
-     */
-    static boolean haveAltRt() {
-        String bootClassPath = System.getProperty("sun.boot.class.path");
-        for (String cp : bootClassPath.split(File.pathSeparator)) {
-            if (cp.endsWith("alt-rt.jar")) {
-                System.err.println("Warning: detected alt-rt.jar in "
-                        + "sun.boot.class.path");
-                return true;
-            }
-        }
-        return false;
-    }
 }
--- a/langtools/test/tools/javac/processing/options/testPrintProcessorInfo/TestWithXstdout.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/processing/options/testPrintProcessorInfo/TestWithXstdout.java	Wed Dec 03 14:25:46 2014 +0000
@@ -56,8 +56,6 @@
 
     static void run_javac(String... args) throws IOException, InterruptedException {
         File javaHome = new File(System.getProperty("java.home"));
-        if (javaHome.getName().equals("jre"))
-            javaHome = javaHome.getParentFile();
         File javac = new File(new File(javaHome, "bin"), "javac");
 
         List<String> opts = new ArrayList<>();
--- a/langtools/test/tools/javac/profiles/ProfileOptionTest.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javac/profiles/ProfileOptionTest.java	Wed Dec 03 14:25:46 2014 +0000
@@ -105,14 +105,18 @@
         JavaFileObject fo = new StringJavaFileObject("Test.java", "class Test { }");
         for (Target t: Target.values()) {
             switch (t) {
-                case JDK1_1: case JDK1_2: // no equivalent -source
+                case JDK1_1:
+                case JDK1_2:
+                case JDK1_3:
+                case JDK1_4:
+                case JDK1_5: // not supported
                     continue;
             }
 
             for (Profile p: Profile.values()) {
                 List<String> opts = new ArrayList<>();
                 opts.addAll(Arrays.asList("-source", t.name, "-target", t.name));
-                opts.add("-Xlint:-options"); // dont warn about no -bootclasspath
+                opts.add("-Xlint:-options"); // don't warn about no -bootclasspath
                 if (p != Profile.DEFAULT)
                     opts.addAll(Arrays.asList("-profile", p.name));
 
--- a/langtools/test/tools/javadoc/6942366/T6942366.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javadoc/6942366/T6942366.java	Wed Dec 03 14:25:46 2014 +0000
@@ -76,14 +76,6 @@
             args.add(".");
         }
 
-        // use a very simple bootclasspath to avoid stuff jtreg might have put on path
-        File javaHome = new File(System.getProperty("java.home"));
-        File rt_jar = new File(javaHome, "lib/rt.jar");
-        if (!rt_jar.exists())
-            throw new Exception("rt.jar not found");
-        args.add("-bootclasspath");
-        args.add(rt_jar.getPath());
-
         args.add(new File(testSrc, "Test.java").getPath());
         System.out.println("javadoc: " + args);
 
--- a/langtools/test/tools/javadoc/6964914/TestUserDoclet.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javadoc/6964914/TestUserDoclet.java	Wed Dec 03 14:25:46 2014 +0000
@@ -47,8 +47,6 @@
     /** Main test method. */
     void run() throws Exception {
         File javaHome = new File(System.getProperty("java.home"));
-        if (javaHome.getName().equals("jre"))
-            javaHome = javaHome.getParentFile();
         File javadoc = new File(new File(javaHome, "bin"), "javadoc");
         File testSrc = new File(System.getProperty("test.src"));
         File testClasses = new File(System.getProperty("test.classes"));
--- a/langtools/test/tools/javadoc/api/basic/GetTask_FileManagerTest.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javadoc/api/basic/GetTask_FileManagerTest.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
  * @run main GetTask_FileManagerTest
  */
 
+import java.io.File;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.util.Arrays;
@@ -36,10 +37,14 @@
 
 import javax.tools.DocumentationTool;
 import javax.tools.DocumentationTool.DocumentationTask;
+import javax.tools.FileObject;
+import javax.tools.ForwardingJavaFileManager;
 import javax.tools.JavaFileObject;
 import javax.tools.JavaFileObject.Kind;
+import javax.tools.StandardJavaFileManager;
 import javax.tools.ToolProvider;
 
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.nio.JavacPathFileManager;
 import com.sun.tools.javac.nio.PathFileManager;
 import com.sun.tools.javac.util.Context;
@@ -60,11 +65,11 @@
     public void testFileManager() throws Exception {
         JavaFileObject srcFile = createSimpleJavaFileObject();
         DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
-        PathFileManager fm = new JavacPathFileManager(new Context(), false, null);
-        Path outDir = getOutDir().toPath();
+        StandardJavaFileManager fm = new TestFileManager();
+        File outDir = getOutDir();
         fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
         Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
-        DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
+        DocumentationTask t = tool.getTask(null, fm, null, null, Arrays.asList("-verbose"), files);
         if (t.call()) {
             System.err.println("task succeeded");
             checkFiles(outDir, standardExpectFiles);
@@ -80,7 +85,7 @@
     public void testBadFileManager() throws Exception {
         JavaFileObject srcFile = createSimpleJavaFileObject();
         DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
-        PathFileManager fm = new JavacPathFileManager(new Context(), false, null) {
+        StandardJavaFileManager fm = new TestFileManager() {
             @Override
             public Iterable<JavaFileObject> list(Location location,
                     String packageName,
@@ -90,8 +95,7 @@
                 throw new UnexpectedError();
             }
         };
-        Path outDir = getOutDir().toPath();
-        fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+        fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(getOutDir()));
         Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
         DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
         try {
@@ -108,4 +112,45 @@
 
     public static class UnexpectedError extends Error { }
 
+    /*
+     * A JavaFileManager which is not a JavacFileManager, even though it uses one internally for
+     * convenience.
+     */
+    static class TestFileManager extends ForwardingJavaFileManager<StandardJavaFileManager>
+            implements StandardJavaFileManager  {
+        TestFileManager() {
+            super(new JavacFileManager(new Context(), false, null));
+        }
+
+        @Override
+        public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files) {
+            return fileManager.getJavaFileObjectsFromFiles(files);
+        }
+
+        @Override
+        public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
+            return fileManager.getJavaFileObjects(files);
+        }
+
+        @Override
+        public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
+            return fileManager.getJavaFileObjectsFromStrings(names);
+        }
+
+        @Override
+        public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
+            return fileManager.getJavaFileObjects(names);
+        }
+
+        @Override
+        public void setLocation(Location location, Iterable<? extends File> path) throws IOException {
+            fileManager.setLocation(location, path);
+        }
+
+        @Override
+        public Iterable<? extends File> getLocation(Location location) {
+            return fileManager.getLocation(location);
+        }
+
+    }
 }
--- a/langtools/test/tools/javah/T5070898.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javah/T5070898.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,14 +73,8 @@
     int runJavah() throws Exception {
         List<String> cmd = new ArrayList<String>();
         File java_home = new File(System.getProperty("java.home"));
-        if (java_home.getName().equals("jre"))
-            java_home = java_home.getParentFile();
         cmd.add(new File(new File(java_home, "bin"), "javah").getPath());
 
-        // ensure we run with the same bootclasspath as this test,
-        // in case this test is being run with -Xbootclasspath
-        cmd.add("-J-Xbootclasspath:" + System.getProperty("sun.boot.class.path"));
-
         cmd.add("JavahTest");
 
         ProcessBuilder pb = new ProcessBuilder(cmd);
--- a/langtools/test/tools/javah/T6893943.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javah/T6893943.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -58,12 +58,8 @@
     void testCommand(String[] args, int expect_rc) throws Exception {
         System.err.println("Test command: " + Arrays.asList(args));
         File javaHome = new File(System.getProperty("java.home"));
-        if (javaHome.getName().equals("jre"))
-            javaHome = javaHome.getParentFile();
-
         List<String> command = new ArrayList<String>();
         command.add(new File(new File(javaHome, "bin"), "javah").getPath());
-        command.add("-J-Xbootclasspath:" + System.getProperty("sun.boot.class.path"));
         command.addAll(Arrays.asList(args));
         //System.err.println("command: " + command);
 
--- a/langtools/test/tools/javah/compareTest/CompareTest.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,265 +0,0 @@
-/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-import com.sun.tools.classfile.AccessFlags;
-import com.sun.tools.classfile.ClassFile;
-import com.sun.tools.classfile.ConstantPoolException;
-import com.sun.tools.classfile.Method;
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.util.LinkedHashSet;
-
-public class CompareTest {
-    String[][] testCases = {
-        { },
-        { "-jni" },
-//        { "-llni" },
-    };
-
-    public static void main(String... args) throws Exception {
-        new CompareTest().run(args);
-    }
-
-    public void run(String... args) throws Exception {
-        old_javah_cmd = new File(args[0]);
-        rt_jar = new File(args[1]);
-
-        Set<String> testClasses;
-        if (args.length > 2) {
-            testClasses = new LinkedHashSet<String>(Arrays.asList(Arrays.copyOfRange(args, 2, args.length)));
-        } else
-            testClasses = getNativeClasses(new JarFile(rt_jar));
-
-        for (String[] options: testCases) {
-            for (String name: testClasses) {
-                test(Arrays.asList(options), rt_jar, name);
-            }
-        }
-
-        if (errors == 0)
-            System.out.println(count + " tests passed");
-        else
-            throw new Exception(errors + "/" + count + " tests failed");
-    }
-
-    public void test(List<String> options, File bootclasspath, String className)
-            throws IOException, InterruptedException {
-        System.err.println("test: " + options + " " + className);
-        count++;
-
-        testOptions = options;
-        testClassName = className;
-
-        File oldOutDir = initDir(file(new File("old"), className));
-        int old_rc = old_javah(options, oldOutDir, bootclasspath, className);
-
-        File newOutDir = initDir(file(new File("new"), className));
-        int new_rc = new_javah(options, newOutDir, bootclasspath, className);
-
-        if (old_rc != new_rc)
-            error("return codes differ; old: " + old_rc + ", new: " + new_rc);
-
-        compare(oldOutDir, newOutDir);
-    }
-
-    int old_javah(List<String> options, File outDir, File bootclasspath, String className)
-            throws IOException, InterruptedException {
-        List<String> cmd = new ArrayList<String>();
-        cmd.add(old_javah_cmd.getPath());
-        cmd.addAll(options);
-        cmd.add("-d");
-        cmd.add(outDir.getPath());
-        cmd.add("-bootclasspath");
-        cmd.add(bootclasspath.getPath());
-        cmd.add(className);
-        System.err.println("old_javah: " + cmd);
-        ProcessBuilder pb = new ProcessBuilder(cmd);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder sb = new StringBuilder();
-        while ((line = in.readLine()) != null) {
-            sb.append(line);
-            sb.append("\n");
-        }
-        System.err.println("old javah out: " + sb.toString());
-        return p.waitFor();
-    }
-
-    int new_javah(List<String> options, File outDir, File bootclasspath, String className) {
-        List<String> args = new ArrayList<String>();
-        args.addAll(options);
-        args.add("-d");
-        args.add(outDir.getPath());
-        args.add("-bootclasspath");
-        args.add(bootclasspath.getPath());
-        args.add(className);
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = new PrintWriter(sw);
-        int rc = com.sun.tools.javah.Main.run(args.toArray(new String[args.size()]), pw);
-        pw.close();
-        System.err.println("new javah out: " + sw.toString());
-        return rc;
-    }
-
-    Set<String> getNativeClasses(JarFile jar) throws IOException, ConstantPoolException {
-        System.err.println("getNativeClasses: " + jar.getName());
-        Set<String> results = new TreeSet<String>();
-        Enumeration<JarEntry> e = jar.entries();
-        while (e.hasMoreElements()) {
-            JarEntry je = e.nextElement();
-            if (isNativeClass(jar, je)) {
-                String name = je.getName();
-                results.add(name.substring(0, name.length() - 6).replace("/", "."));
-            }
-        }
-        return results;
-    }
-
-    boolean isNativeClass(JarFile jar, JarEntry entry) throws IOException, ConstantPoolException {
-        String name = entry.getName();
-        if (name.startsWith("META-INF") || !name.endsWith(".class"))
-            return false;
-        //String className = name.substring(0, name.length() - 6).replace("/", ".");
-        //System.err.println("check " + className);
-        InputStream in = jar.getInputStream(entry);
-        ClassFile cf = ClassFile.read(in);
-        for (int i = 0; i < cf.methods.length; i++) {
-            Method m = cf.methods[i];
-            if (m.access_flags.is(AccessFlags.ACC_NATIVE)) {
-                // System.err.println(className);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    void compare(File f1, File f2) throws IOException {
-        if (f1.isFile() && f2.isFile())
-            compareFiles(f1, f2);
-        else if (f1.isDirectory() && f2.isDirectory())
-            compareDirectories(f1, f2);
-        else
-            error("files differ: "
-                + f1 + " (" + getFileType(f1) + "), "
-                + f2 + " (" + getFileType(f2) + ")");
-    }
-
-    void compareDirectories(File d1, File d2) throws IOException {
-        Set<String> list = new TreeSet<String>();
-        list.addAll(Arrays.asList(d1.list()));
-        list.addAll(Arrays.asList(d2.list()));
-        for (String c: list)
-            compare(new File(d1, c), new File(d2, c));
-    }
-
-    void compareFiles(File f1, File f2) throws IOException {
-        byte[] c1 = readFile(f1);
-        byte[] c2 = readFile(f2);
-        if (!Arrays.equals(c1, c2))
-            error("files differ: " + f1 + ", " + f2);
-    }
-
-    byte[] readFile(File file) throws IOException {
-        int size = (int) file.length();
-        byte[] data = new byte[size];
-        DataInputStream in = new DataInputStream(new FileInputStream(file));
-        try {
-            in.readFully(data);
-        } finally {
-            in.close();
-        }
-        return data;
-    }
-
-    String getFileType(File f) {
-        return f.isDirectory() ? "directory"
-                : f.isFile() ? "file"
-                : f.exists() ? "other"
-                : "not found";
-    }
-
-    /**
-     * Set up an empty directory.
-     */
-    public File initDir(File dir) {
-        if (dir.exists())
-            deleteAll(dir);
-        dir.mkdirs();
-        return dir;
-    }
-
-    /**
-     * Delete a file or a directory (including all its contents).
-     */
-    boolean deleteAll(File file) {
-        if (file.isDirectory()) {
-            for (File f: file.listFiles())
-                deleteAll(f);
-        }
-        return file.delete();
-    }
-
-    File file(File dir, String... path) {
-        File f = dir;
-        for (String p: path)
-            f = new File(f, p);
-        return f;
-    }
-
-    /**
-     * Report an error.
-     */
-    void error(String msg, String... more) {
-        System.err.println("test: " + testOptions + " " + testClassName);
-        System.err.println("error: " + msg);
-        for (String s: more)
-            System.err.println(s);
-        errors++;
-        System.exit(1);
-    }
-
-    File old_javah_cmd;
-    File rt_jar;
-    List<String> testOptions;
-    String testClassName;
-    int count;
-    int errors;
-}
--- a/langtools/test/tools/javah/compareTest/CompareTest.sh	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-jdk=${1:-/opt/jdk/1.6.0}
-javah=${jdk}/bin/javah
-rtjar=${jdk}/jre/lib/rt.jar
-
-# compile test
-mkdir -p build/compareTest
-/opt/jdk/1.7.0/bin/javac -classpath build/classes -d build/compareTest test/tools/javah/compareTest/*.java
-
-# run test
-/opt/jdk/1.7.0/bin/java -classpath build/compareTest:build/classes CompareTest $javah $rtjar 2>&1 | tee CompareTest.out
-
-# show diffs for tests that failed
-grep 'error:' CompareTest.out | sed -e 's|.*new/||' -e 's/\.h$//' -e 's|_|.|g' > CompareTest.classes.fail
-
-for i in $(cat CompareTest.classes.fail) ; do 
-	/opt/jdk/1.7.0/bin/java -classpath compareTest:build/classes CompareTest $javah $rtjar $i 
-	diff -r old new 
-done 
-
--- a/langtools/test/tools/javah/compareTest/FindNativeFiles.java	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Enumeration;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-import com.sun.tools.classfile.AccessFlags;
-import com.sun.tools.classfile.ClassFile;
-import com.sun.tools.classfile.ConstantPoolException;
-import com.sun.tools.classfile.Method;
-import java.util.Comparator;
-import java.util.Set;
-import java.util.TreeSet;
-
-public class FindNativeFiles {
-    public static void main(String[] args) throws IOException, ConstantPoolException {
-        new FindNativeFiles().run(args);
-    }
-
-    public void run(String[] args) throws IOException, ConstantPoolException {
-        JarFile jar = new JarFile(args[0]);
-        Set<JarEntry> entries = getNativeClasses(jar);
-        for (JarEntry e: entries) {
-            String name = e.getName();
-            String className = name.substring(0, name.length() - 6).replace("/", ".");
-            System.out.println(className);
-        }
-    }
-
-    Set<JarEntry> getNativeClasses(JarFile jar) throws IOException, ConstantPoolException {
-        Set<JarEntry> results = new TreeSet<JarEntry>(new Comparator<JarEntry>() {
-            public int compare(JarEntry o1, JarEntry o2) {
-                return o1.getName().compareTo(o2.getName());
-            }
-        });
-        Enumeration<JarEntry> e = jar.entries();
-        while (e.hasMoreElements()) {
-            JarEntry je = e.nextElement();
-            if (isNativeClass(jar, je))
-                results.add(je);
-        }
-        return results;
-    }
-
-    boolean isNativeClass(JarFile jar, JarEntry entry) throws IOException, ConstantPoolException {
-        String name = entry.getName();
-        if (name.startsWith("META-INF") || !name.endsWith(".class"))
-            return false;
-        //String className = name.substring(0, name.length() - 6).replace("/", ".");
-        //System.err.println("check " + className);
-        InputStream in = jar.getInputStream(entry);
-        ClassFile cf = ClassFile.read(in);
-        in.close();
-        for (int i = 0; i < cf.methods.length; i++) {
-            Method m = cf.methods[i];
-            if (m.access_flags.is(AccessFlags.ACC_NATIVE)) {
-                // System.err.println(className);
-                return true;
-            }
-        }
-        return false;
-    }
-}
--- a/langtools/test/tools/javah/compareTest/README	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-test/tools/javah/compareTest/README
-
-This directory contains a program for comparing the output of new javah against the
-output of JDK 6 or other older versions of javah.
-
-It cannot be run automatically because of the need for the older version of javah
-to compare against.
-
-The test works by scanning a jar file, such as rt.jar, looking for all files with
-native methods.  It then runs both the old and new versions of javah on those
-classes with native methods, and verifies that the results are character-for-character
-identical.
-
-To run the test, build langtools, then execute the script in the root langtools 
-directory, providing the location of the JDK to be tested. The default is
-/opt/jdk/1.6.0.
--- a/langtools/test/tools/javap/T6729471.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javap/T6729471.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,19 +26,23 @@
  * @test
  * @bug 6729471
  * @summary javap does not output inner interfaces of an interface
+ * @library /tools/lib
+ * @build ToolBox
+ * @run main T6729471
  */
 
 import java.io.*;
 import java.net.*;
 import java.util.*;
+import javax.tools.*;
 
 public class T6729471
 {
-    public static void main(String... args) {
+    public static void main(String... args) throws IOException {
         new T6729471().run();
     }
 
-    void run() {
+    void run() throws IOException {
         File testClasses = new File(System.getProperty("test.classes"));
 
         // simple class
@@ -57,34 +61,31 @@
         verify(new File(testClasses, "T6729471.class").toURI().toString(),
                 "public static void main(java.lang.String...)");
 
-        // jar url: rt.jar
-        File java_home = new File(System.getProperty("java.home"));
-        if (java_home.getName().equals("jre"))
-            java_home = java_home.getParentFile();
-        File rt_jar = new File(new File(new File(java_home, "jre"), "lib"), "rt.jar");
+        // jar url
+        File testJar = createJar("test.jar", "java.util.*");
         try {
-            verify("jar:" + rt_jar.toURL() + "!/java/util/Map.class",
+            verify("jar:" + testJar.toURL() + "!/java/util/Map.class",
                 "public abstract boolean containsKey(java.lang.Object)");
         } catch (MalformedURLException e) {
             error(e.toString());
         }
 
-        // jar url: ct.sym, if it exists
-        File ct_sym = new File(new File(java_home, "lib"), "ct.sym");
-        if (ct_sym.exists()) {
-            try {
-                verify("jar:" + ct_sym.toURL() + "!/META-INF/sym/rt.jar/java/util/Map.class",
-                    "public abstract boolean containsKey(java.lang.Object)");
-            } catch (MalformedURLException e) {
-                error(e.toString());
-            }
-        } else
-            System.err.println("warning: ct.sym not found");
-
         if (errors > 0)
             throw new Error(errors + " found.");
     }
 
+    File createJar(String name, String... paths) throws IOException {
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        try (JavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            File f = new File(name);
+            ToolBox tb = new ToolBox();
+            tb.new JarTask(f.getPath())
+                .files(fm, StandardLocation.PLATFORM_CLASS_PATH, paths)
+                .run();
+            return f;
+        }
+    }
+
     void verify(String className, String... expects) {
         String output = javap(className);
         for (String expect: expects) {
--- a/langtools/test/tools/javap/WhitespaceTest.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/javap/WhitespaceTest.java	Wed Dec 03 14:25:46 2014 +0000
@@ -57,8 +57,11 @@
             if (line.endsWith(" "))
                 error("line has trailing whitespace: " + line);
             int comment = line.indexOf(doubleSlash);
-            if (comment > 0 && line.charAt(comment - 1) != ' ')
-                error("no space before comment: " + line);
+            if (comment > 0 && line.charAt(comment - 1) != ' ') {
+                // make allowance for URLs
+                if (!line.matches(".*\\bfile:/{3}.*"))
+                    error("no space before comment: " + line);
+            }
             if (line.matches(" +}"))
                 error("bad indentation: " + line);
         }
--- a/langtools/test/tools/jdeps/APIDeps.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/jdeps/APIDeps.java	Wed Dec 03 14:25:46 2014 +0000
@@ -39,27 +39,6 @@
 import java.util.regex.*;
 
 public class APIDeps {
-    private static boolean symbolFileExist = initProfiles();
-    private static boolean initProfiles() {
-        // check if ct.sym exists; if not use the profiles.properties file
-        Path home = Paths.get(System.getProperty("java.home"));
-        if (home.endsWith("jre")) {
-            home = home.getParent();
-        }
-        Path ctsym = home.resolve("lib").resolve("ct.sym");
-        boolean symbolExists = ctsym.toFile().exists();
-        if (!symbolExists) {
-            Path testSrcProfiles =
-                Paths.get(System.getProperty("test.src", "."), "profiles.properties");
-            if (!testSrcProfiles.toFile().exists())
-                throw new Error(testSrcProfiles + " does not exist");
-            System.out.format("%s doesn't exist.%nUse %s to initialize profiles info%n",
-                ctsym, testSrcProfiles);
-            System.setProperty("jdeps.profiles", testSrcProfiles.toString());
-        }
-        return symbolExists;
-    }
-
     public static void main(String... args) throws Exception {
         int errors = 0;
         errors += new APIDeps().run();
--- a/langtools/test/tools/jdeps/Basic.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/jdeps/Basic.java	Wed Dec 03 14:25:46 2014 +0000
@@ -41,27 +41,6 @@
 import static java.nio.file.StandardCopyOption.*;
 
 public class Basic {
-    private static boolean symbolFileExist = initProfiles();
-    private static boolean initProfiles() {
-        // check if ct.sym exists; if not use the profiles.properties file
-        Path home = Paths.get(System.getProperty("java.home"));
-        if (home.endsWith("jre")) {
-            home = home.getParent();
-        }
-        Path ctsym = home.resolve("lib").resolve("ct.sym");
-        boolean symbolExists = ctsym.toFile().exists();
-        if (!symbolExists) {
-            Path testSrcProfiles =
-                Paths.get(System.getProperty("test.src", "."), "profiles.properties");
-            if (!testSrcProfiles.toFile().exists())
-                throw new Error(testSrcProfiles + " does not exist");
-            System.out.format("%s doesn't exist.%nUse %s to initialize profiles info%n",
-                ctsym, testSrcProfiles);
-            System.setProperty("jdeps.profiles", testSrcProfiles.toString());
-        }
-        return symbolExists;
-    }
-
     public static void main(String... args) throws Exception {
         int errors = 0;
         errors += new Basic().run();
--- a/langtools/test/tools/jdeps/DotFileTest.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/jdeps/DotFileTest.java	Wed Dec 03 14:25:46 2014 +0000
@@ -41,27 +41,6 @@
 import java.util.regex.*;
 
 public class DotFileTest {
-    private static boolean symbolFileExist = initProfiles();
-    private static boolean initProfiles() {
-        // check if ct.sym exists; if not use the profiles.properties file
-        Path home = Paths.get(System.getProperty("java.home"));
-        if (home.endsWith("jre")) {
-            home = home.getParent();
-        }
-        Path ctsym = home.resolve("lib").resolve("ct.sym");
-        boolean symbolExists = ctsym.toFile().exists();
-        if (!symbolExists) {
-            Path testSrcProfiles =
-                Paths.get(System.getProperty("test.src", "."), "profiles.properties");
-            if (!testSrcProfiles.toFile().exists())
-                throw new Error(testSrcProfiles + " does not exist");
-            System.out.format("%s doesn't exist.%nUse %s to initialize profiles info%n",
-                ctsym, testSrcProfiles);
-            System.setProperty("jdeps.profiles", testSrcProfiles.toString());
-        }
-        return symbolExists;
-    }
-
     public static void main(String... args) throws Exception {
         int errors = 0;
         errors += new DotFileTest().run();
--- a/langtools/test/tools/jdeps/profiles.properties	Tue Nov 18 15:25:18 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-# This properties file is used for testing a JDK development build.
-# No need to keep this properties file up to date as long as it covers
-# the APIs used by the jdeps regression test.
-profile.1.name = compact1
-profile.1.packages = \
-    java.io \
-    java.lang \
-    java.lang.annotation \
-    java.lang.invoke \
-    java.lang.ref \
-    java.lang.reflect \
-    java.math \
-    java.net \
-    java.nio \
-    java.nio.channels \
-    java.nio.channels.spi \
-    java.nio.charset \
-    java.nio.charset.spi \
-    java.nio.file \
-    java.nio.file.attribute \
-    java.nio.file.spi \
-    java.security \
-    java.security.cert \
-    java.security.interfaces \
-    java.security.spec \
-    java.text \
-    java.text.spi \
-    java.util \
-    java.util.concurrent \
-    java.util.concurrent.atomic \
-    java.util.concurrent.locks \
-    java.util.jar \
-    java.util.logging \
-    java.util.regex \
-    java.util.spi \
-    java.util.zip \
-    javax.crypto \
-    javax.crypto.interfaces \
-    javax.crypto.spec \
-    javax.security.auth \
-    javax.security.auth.callback \
-    javax.security.auth.login \
-    javax.security.auth.spi \
-    javax.security.auth.x500 \
-    javax.net \
-    javax.net.ssl \
-    javax.security.cert \
-    \
-    com.sun.net.ssl \
-    com.sun.nio.file \
-    com.sun.nio.sctp \
-    com.sun.security.auth \
-    com.sun.security.auth.login
-
-profile.2.name = compact2
-profile.2.packages = \
-    java.sql \
-    javax.sql \
-    javax.xml \
-    javax.xml.datatype \
-    javax.xml.namespace \
-    javax.xml.parsers \
-    javax.xml.stream \
-    javax.xml.stream.events \
-    javax.xml.stream.util \
-    javax.xml.transform \
-    javax.xml.transform.dom \
-    javax.xml.transform.sax \
-    javax.xml.transform.stax \
-    javax.xml.transform.stream \
-    javax.xml.validation \
-    javax.xml.xpath \
-    org.w3c.dom \
-    org.w3c.dom.bootstrap \
-    org.w3c.dom.events \
-    org.w3c.dom.ls \
-    org.xml.sax \
-    org.xml.sax.ext \
-    org.xml.sax.helpers \
-    java.rmi \
-    java.rmi.activation \
-    java.rmi.dgc \
-    java.rmi.registry \
-    java.rmi.server \
-    javax.rmi.ssl \
-    javax.transaction \
-    javax.transaction.xa \
-    \
-    com.sun.net.httpserver \
-    com.sun.net.httpserver.spi
-
-profile.3.name = compact3
-profile.3.packages = \
-    java.lang.instrument \
-    java.lang.management \
-    java.security.acl \
-    java.util.prefs \
-    javax.management \
-    javax.management.loading \
-    javax.management.modelmbean \
-    javax.management.monitor \
-    javax.management.openmbean \
-    javax.management.relation \
-    javax.management.remote \
-    javax.management.remote.rmi \
-    javax.management.timer \
-    javax.naming \
-    javax.naming.directory \
-    javax.naming.event \
-    javax.naming.ldap \
-    javax.naming.spi \
-    javax.sql.rowset \
-    javax.sql.rowset.serial \
-    javax.sql.rowset.spi \
-    javax.security.auth.kerberos \
-    javax.security.sasl \
-    javax.script \
-    javax.smartcardio \
-    javax.xml.crypto \
-    javax.xml.crypto.dom \
-    javax.xml.crypto.dsig \
-    javax.xml.crypto.dsig.dom \
-    javax.xml.crypto.dsig.keyinfo \
-    javax.xml.crypto.dsig.spec \
-    javax.annotation.processing \
-    javax.lang.model \
-    javax.lang.model.element \
-    javax.lang.model.type \
-    javax.lang.model.util \
-    javax.tools \
-    javax.tools.annotation \
-    org.ietf.jgss \
-    \
-    com.sun.management \
-    com.sun.security.auth.callback \
-    com.sun.security.auth.module \
-    com.sun.security.jgss
-
-profile.4.name = Full JRE
-profile.4.packages = \
-    java.applet \
-    java.awt \
-    java.awt.color \
-    java.awt.datatransfer \
-    java.awt.dnd \
-    java.awt.dnd.peer \
-    java.awt.event \
-    java.awt.font \
-    java.awt.geom \
-    java.awt.im \
-    java.awt.im.spi \
-    java.awt.image \
-    java.awt.image.renderable \
-    java.awt.peer \
-    java.awt.print \
-    java.beans \
-    java.beans.beancontext \
-    javax.accessibility \
-    javax.imageio \
-    javax.imageio.event \
-    javax.imageio.metadata \
-    javax.imageio.plugins.bmp \
-    javax.imageio.plugins.jpeg \
-    javax.imageio.spi \
-    javax.imageio.stream \
-    javax.print \
-    javax.print.attribute \
-    javax.print.attribute.standard \
-    javax.print.event \
-    javax.sound.midi \
-    javax.sound.midi.spi \
-    javax.sound.sampled \
-    javax.sound.sampled.spi \
-    javax.swing \
-    javax.swing.border \
-    javax.swing.colorchooser \
-    javax.swing.event \
-    javax.swing.filechooser \
-    javax.swing.plaf \
-    javax.swing.plaf.basic \
-    javax.swing.plaf.metal \
-    javax.swing.plaf.multi \
-    javax.swing.plaf.nimbus \
-    javax.swing.plaf.synth \
-    javax.swing.table \
-    javax.swing.text \
-    javax.swing.text.html \
-    javax.swing.text.html.parser \
-    javax.swing.text.rtf \
-    javax.swing.tree \
-    javax.swing.undo \
-    javax.activation \
-    javax.jws \
-    javax.jws.soap \
-    javax.rmi \
-    javax.rmi.CORBA \
-    javax.xml.bind \
-    javax.xml.bind.annotation \
-    javax.xml.bind.annotation.adapters \
-    javax.xml.bind.attachment \
-    javax.xml.bind.helpers \
-    javax.xml.bind.util \
-    javax.xml.soap \
-    javax.xml.ws \
-    javax.xml.ws.handler \
-    javax.xml.ws.handler.soap \
-    javax.xml.ws.http \
-    javax.xml.ws.soap \
-    javax.xml.ws.spi \
-    javax.xml.ws.spi.http \
-    javax.xml.ws.wsaddressing \
-    javax.annotation \
-    org.omg.CORBA \
-    org.omg.CORBA.DynAnyPackage \
-    org.omg.CORBA.ORBPackage \
-    org.omg.CORBA.TypeCodePackage \
-    org.omg.CORBA.portable \
-    org.omg.CORBA_2_3 \
-    org.omg.CORBA_2_3.portable \
-    org.omg.CosNaming \
-    org.omg.CosNaming.NamingContextExtPackage \
-    org.omg.CosNaming.NamingContextPackage \
-    org.omg.Dynamic \
-    org.omg.DynamicAny \
-    org.omg.DynamicAny.DynAnyFactoryPackage \
-    org.omg.DynamicAny.DynAnyPackage \
-    org.omg.IOP \
-    org.omg.IOP.CodecFactoryPackage \
-    org.omg.IOP.CodecPackage \
-    org.omg.Messaging \
-    org.omg.PortableInterceptor \
-    org.omg.PortableInterceptor.ORBInitInfoPackage \
-    org.omg.PortableServer \
-    org.omg.PortableServer.CurrentPackage \
-    org.omg.PortableServer.POAManagerPackage \
-    org.omg.PortableServer.POAPackage \
-    org.omg.PortableServer.ServantLocatorPackage \
-    org.omg.PortableServer.portable \
-    org.omg.SendingContext \
-    org.omg.stub.java.rmi \
-    org.omg.stub.javax.management.remote.rmi
-
-# Remaining JDK supported API
-profile.5.name = JDK tools
-profile.5.packages = \
-    com.sun.jdi \
-    com.sun.jdi.connect \
-    com.sun.jdi.connect.spi \
-    com.sun.jdi.event \
-    com.sun.jdi.request \
-    com.sun.javadoc \
-    com.sun.tools.doclets \
-    com.sun.tools.doctree \
-    com.sun.source.tree \
-    com.sun.source.util \
-    com.sun.tools.attach \
-    com.sun.tools.attach.spi \
-    com.sun.tools.jconsole \
-    com.sun.tools.javac \
-    com.sun.tools.javah \
-    com.sun.tools.javap \
-    com.sun.tools.javadoc \
-    com.sun.servicetag
--- a/langtools/test/tools/lib/ToolBox.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/lib/ToolBox.java	Wed Dec 03 14:25:46 2014 +0000
@@ -1546,31 +1546,31 @@
         }
 
         private void writeFiles(JarOutputStream jos) throws IOException {
-            Path base = (baseDir == null) ? currDir : baseDir;
-            for (Path path : paths) {
-                Files.walkFileTree(base.resolve(path), new SimpleFileVisitor<Path>() {
-                    @Override
-                    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
-                        try {
+                Path base = (baseDir == null) ? currDir : baseDir;
+                for (Path path : paths) {
+                    Files.walkFileTree(base.resolve(path), new SimpleFileVisitor<Path>() {
+                        @Override
+                        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
+                            try {
                             String p = base.relativize(file)
                                     .normalize()
                                     .toString()
                                     .replace(File.separatorChar, '/');
                             JarEntry e = new JarEntry(p);
-                            jos.putNextEntry(e);
+                                jos.putNextEntry(e);
                             try {
                                 jos.write(Files.readAllBytes(file));
                             } finally {
                                 jos.closeEntry();
                             }
-                            return FileVisitResult.CONTINUE;
-                        } catch (IOException e) {
+                                return FileVisitResult.CONTINUE;
+                            } catch (IOException e) {
                             error("Exception while adding " + file + " to jar file", e);
-                            return FileVisitResult.TERMINATE;
+                                return FileVisitResult.TERMINATE;
+                            }
                         }
-                    }
-                });
-            }
+                    });
+                }
         }
 
         private void writeFileObjects(JarOutputStream jos) throws IOException {
@@ -1587,9 +1587,9 @@
                     } catch (IOException ex) {
                         error("Exception while adding " + fo.getName() + " to jar file", ex);
                     }
-                } finally {
+            } finally {
                     jos.closeEntry();
-                }
+            }
             }
         }
 
@@ -1599,17 +1599,30 @@
          */
         private final Pattern jarEntry = Pattern.compile(".*!/(?:META-INF/sym/[^/]+/)?(.*)");
 
+        /*
+         * A jrt: URL is of the form  jrt:/module/package/file
+         */
+        private final Pattern jrtEntry = Pattern.compile("/([^/]+)/(.*)");
+
         private String guessPath(FileObject fo) {
             URI u = fo.toUri();
             switch (u.getScheme()) {
-                case "jar":
+                case "jar": {
                     Matcher m = jarEntry.matcher(u.getSchemeSpecificPart());
                     if (m.matches()) {
                         return m.group(1);
                     }
                     break;
+                }
+                case "jrt": {
+                    Matcher m = jrtEntry.matcher(u.getSchemeSpecificPart());
+                    if (m.matches()) {
+                        return m.group(2);
+                    }
+                    break;
+                }
             }
-            throw new IllegalArgumentException(fo.getName());
+            throw new IllegalArgumentException(fo.getName() + "--" + fo.toUri());
         }
 
         private void error(String message, Throwable t) {
--- a/langtools/test/tools/sjavac/OptionDecoding.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/test/tools/sjavac/OptionDecoding.java	Wed Dec 03 14:25:46 2014 +0000
@@ -35,6 +35,7 @@
 import static util.OptionTestUtil.assertEquals;
 import static util.OptionTestUtil.checkFilesFound;
 
+import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -218,20 +219,20 @@
 
     // Test input paths
     static void testSearchPaths() {
-
         List<String> i, x, iF, xF;
         i = x = iF = xF = new ArrayList<>();
 
         SourceLocation dir1 = new SourceLocation(Paths.get("dir1"), i, x, iF, xF);
         SourceLocation dir2 = new SourceLocation(Paths.get("dir2"), i, x, iF, xF);
+        String dir1_PS_dir2 = "dir1" + File.pathSeparator + "dir2";
 
-        Options options = Options.parseArgs("-sourcepath", "dir1:dir2");
+        Options options = Options.parseArgs("-sourcepath", dir1_PS_dir2);
         assertEquals(options.getSourceSearchPaths(), Arrays.asList(dir1, dir2));
 
-        options = Options.parseArgs("-modulepath", "dir1:dir2");
+        options = Options.parseArgs("-modulepath", dir1_PS_dir2);
         assertEquals(options.getModuleSearchPaths(), Arrays.asList(dir1, dir2));
 
-        options = Options.parseArgs("-classpath", "dir1:dir2");
+        options = Options.parseArgs("-classpath", dir1_PS_dir2);
         assertEquals(options.getClassSearchPath(), Arrays.asList(dir1, dir2));
     }