src/share/classes/com/sun/tools/javac/sym/CreateSymbols.java

Thu, 31 Aug 2017 15:17:03 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:17:03 +0800
changeset 2525
2eb010b6cb22
parent 2078
1a3e8347f3dd
parent 0
959103a6100f
child 3932
b8a6df910f59
permissions
-rw-r--r--

merge

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation. Oracle designates this
aoqi@0 8 * particular file as subject to the "Classpath" exception as provided
aoqi@0 9 * by Oracle in the LICENSE file that accompanied this code.
aoqi@0 10 *
aoqi@0 11 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 14 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 15 * accompanied this code).
aoqi@0 16 *
aoqi@0 17 * You should have received a copy of the GNU General Public License version
aoqi@0 18 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 20 *
aoqi@0 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 22 * or visit www.oracle.com if you need additional information or have any
aoqi@0 23 * questions.
aoqi@0 24 */
aoqi@0 25
aoqi@0 26 package com.sun.tools.javac.sym;
aoqi@0 27
aoqi@0 28 import com.sun.tools.javac.api.JavacTaskImpl;
aoqi@0 29 import com.sun.tools.javac.code.Kinds;
aoqi@0 30 import com.sun.tools.javac.code.Scope;
aoqi@0 31 import com.sun.tools.javac.code.Symbol.*;
aoqi@0 32 import com.sun.tools.javac.code.Symbol;
aoqi@0 33 import com.sun.tools.javac.code.Attribute;
aoqi@0 34 import com.sun.tools.javac.code.Symtab;
aoqi@0 35 import com.sun.tools.javac.code.Type;
aoqi@0 36 import com.sun.tools.javac.code.Types;
aoqi@0 37 import com.sun.tools.javac.jvm.ClassWriter;
aoqi@0 38 import com.sun.tools.javac.jvm.Pool;
aoqi@0 39 import com.sun.tools.javac.processing.JavacProcessingEnvironment;
aoqi@0 40 import com.sun.tools.javac.util.List;
aoqi@0 41 import com.sun.tools.javac.util.Names;
aoqi@0 42 import com.sun.tools.javac.util.Pair;
aoqi@0 43
aoqi@0 44 import java.io.File;
aoqi@0 45 import java.io.IOException;
aoqi@0 46 import java.util.ArrayList;
aoqi@0 47 import java.util.EnumSet;
aoqi@0 48 import java.util.Enumeration;
aoqi@0 49 import java.util.HashSet;
aoqi@0 50 import java.util.Map;
aoqi@0 51 import java.util.ResourceBundle;
aoqi@0 52 import java.util.Set;
aoqi@0 53
aoqi@0 54 import javax.annotation.processing.AbstractProcessor;
aoqi@0 55 import javax.annotation.processing.RoundEnvironment;
aoqi@0 56 import javax.annotation.processing.SupportedAnnotationTypes;
aoqi@0 57 import javax.annotation.processing.SupportedOptions;
aoqi@0 58 import javax.lang.model.SourceVersion;
aoqi@0 59 import javax.lang.model.element.ElementKind;
aoqi@0 60 import javax.lang.model.element.TypeElement;
aoqi@0 61 import javax.tools.Diagnostic;
aoqi@0 62 import javax.tools.JavaCompiler;
aoqi@0 63 import javax.tools.JavaFileManager.Location;
aoqi@0 64 import javax.tools.JavaFileObject;
aoqi@0 65 import static javax.tools.JavaFileObject.Kind.CLASS;
aoqi@0 66 import javax.tools.StandardJavaFileManager;
aoqi@0 67 import javax.tools.StandardLocation;
aoqi@0 68 import javax.tools.ToolProvider;
aoqi@0 69
aoqi@0 70 /**
aoqi@0 71 * Used to generate a "symbol file" representing rt.jar that only
aoqi@0 72 * includes supported or legacy proprietary API. Valid annotation
aoqi@0 73 * processor options:
aoqi@0 74 *
aoqi@0 75 * <dl>
aoqi@0 76 * <dt>com.sun.tools.javac.sym.Jar</dt>
aoqi@0 77 * <dd>Specifies the location of rt.jar.</dd>
aoqi@0 78 * <dt>com.sun.tools.javac.sym.Dest</dt>
aoqi@0 79 * <dd>Specifies the destination directory.</dd>
aoqi@0 80 * </dl>
aoqi@0 81 *
aoqi@0 82 * <p><b>This is NOT part of any supported API.
aoqi@0 83 * If you write code that depends on this, you do so at your own
aoqi@0 84 * risk. This code and its internal interfaces are subject to change
aoqi@0 85 * or deletion without notice.</b></p>
aoqi@0 86 *
aoqi@0 87 * @author Peter von der Ah\u00e9
aoqi@0 88 */
aoqi@0 89 @SupportedOptions({
aoqi@0 90 "com.sun.tools.javac.sym.Jar",
aoqi@0 91 "com.sun.tools.javac.sym.Dest",
aoqi@0 92 "com.sun.tools.javac.sym.Profiles"})
aoqi@0 93 @SupportedAnnotationTypes("*")
aoqi@0 94 public class CreateSymbols extends AbstractProcessor {
aoqi@0 95
aoqi@0 96 static Set<String> getLegacyPackages() {
aoqi@0 97 ResourceBundle legacyBundle
aoqi@0 98 = ResourceBundle.getBundle("com.sun.tools.javac.resources.legacy");
aoqi@0 99 Set<String> keys = new HashSet<String>();
aoqi@0 100 for (Enumeration<String> e = legacyBundle.getKeys(); e.hasMoreElements(); )
aoqi@0 101 keys.add(e.nextElement());
aoqi@0 102 return keys;
aoqi@0 103 }
aoqi@0 104
aoqi@0 105 public boolean process(Set<? extends TypeElement> tes, RoundEnvironment renv) {
aoqi@0 106 try {
aoqi@0 107 if (renv.processingOver())
aoqi@0 108 createSymbols();
aoqi@0 109 } catch (IOException e) {
aoqi@0 110 CharSequence msg = e.getLocalizedMessage();
aoqi@0 111 if (msg == null)
aoqi@0 112 msg = e.toString();
aoqi@0 113 processingEnv.getMessager()
aoqi@0 114 .printMessage(Diagnostic.Kind.ERROR, msg);
aoqi@0 115 } catch (Throwable t) {
aoqi@0 116 t.printStackTrace();
aoqi@0 117 Throwable cause = t.getCause();
aoqi@0 118 if (cause == null)
aoqi@0 119 cause = t;
aoqi@0 120 CharSequence msg = cause.getLocalizedMessage();
aoqi@0 121 if (msg == null)
aoqi@0 122 msg = cause.toString();
aoqi@0 123 processingEnv.getMessager()
aoqi@0 124 .printMessage(Diagnostic.Kind.ERROR, msg);
aoqi@0 125 }
aoqi@0 126 return true;
aoqi@0 127 }
aoqi@0 128
aoqi@0 129 void createSymbols() throws IOException {
aoqi@0 130 Set<String> legacy = getLegacyPackages();
aoqi@0 131 Set<String> legacyProprietary = getLegacyPackages();
aoqi@0 132 Set<String> documented = new HashSet<String>();
aoqi@0 133 Set<PackageSymbol> packages =
aoqi@0 134 ((JavacProcessingEnvironment)processingEnv).getSpecifiedPackages();
aoqi@0 135 Map<String,String> pOptions = processingEnv.getOptions();
aoqi@0 136 String jarName = pOptions.get("com.sun.tools.javac.sym.Jar");
aoqi@0 137 if (jarName == null)
aoqi@0 138 throw new RuntimeException("Must use -Acom.sun.tools.javac.sym.Jar=LOCATION_OF_JAR");
aoqi@0 139 String destName = pOptions.get("com.sun.tools.javac.sym.Dest");
aoqi@0 140 if (destName == null)
aoqi@0 141 throw new RuntimeException("Must use -Acom.sun.tools.javac.sym.Dest=LOCATION_OF_JAR");
aoqi@0 142 String profileSpec=pOptions.get("com.sun.tools.javac.sym.Profiles");
aoqi@0 143 if (profileSpec == null)
aoqi@0 144 throw new RuntimeException("Must use -Acom.sun.tools.javac.sym.Profiles=PROFILES_SPEC");
aoqi@0 145 Profiles profiles = Profiles.read(new File(profileSpec));
aoqi@0 146
aoqi@0 147 for (PackageSymbol psym : packages) {
aoqi@0 148 String name = psym.getQualifiedName().toString();
aoqi@0 149 legacyProprietary.remove(name);
aoqi@0 150 documented.add(name);
aoqi@0 151 }
aoqi@0 152
aoqi@0 153 JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
aoqi@0 154 StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
aoqi@0 155 Location jarLocation = StandardLocation.locationFor(jarName);
aoqi@0 156 File jarFile = new File(jarName);
aoqi@0 157 fm.setLocation(jarLocation, List.of(jarFile));
aoqi@0 158 fm.setLocation(StandardLocation.CLASS_PATH, List.<File>nil());
aoqi@0 159 fm.setLocation(StandardLocation.SOURCE_PATH, List.<File>nil());
aoqi@0 160 {
aoqi@0 161 ArrayList<File> bootClassPath = new ArrayList<File>();
aoqi@0 162 bootClassPath.add(jarFile);
aoqi@0 163 for (File path : fm.getLocation(StandardLocation.PLATFORM_CLASS_PATH)) {
aoqi@0 164 if (!new File(path.getName()).equals(new File("rt.jar")))
aoqi@0 165 bootClassPath.add(path);
aoqi@0 166 }
aoqi@0 167 System.err.println("Using boot class path = " + bootClassPath);
aoqi@0 168 fm.setLocation(StandardLocation.PLATFORM_CLASS_PATH, bootClassPath);
aoqi@0 169 }
aoqi@0 170 // System.out.println(fm.getLocation(StandardLocation.PLATFORM_CLASS_PATH));
aoqi@0 171 File destDir = new File(destName);
aoqi@0 172 if (!destDir.exists())
aoqi@0 173 if (!destDir.mkdirs())
aoqi@0 174 throw new RuntimeException("Could not create " + destDir);
aoqi@0 175 fm.setLocation(StandardLocation.CLASS_OUTPUT, List.of(destDir));
aoqi@0 176 Set<String> hiddenPackages = new HashSet<String>();
aoqi@0 177 Set<String> crisp = new HashSet<String>();
aoqi@0 178 List<String> options = List.of("-XDdev");
aoqi@0 179 // options = options.prepend("-doe");
aoqi@0 180 // options = options.prepend("-verbose");
aoqi@0 181 JavacTaskImpl task = (JavacTaskImpl)
aoqi@0 182 tool.getTask(null, fm, null, options, null, null);
aoqi@0 183 com.sun.tools.javac.main.JavaCompiler compiler =
aoqi@0 184 com.sun.tools.javac.main.JavaCompiler.instance(task.getContext());
aoqi@0 185 ClassWriter writer = ClassWriter.instance(task.getContext());
aoqi@0 186 Symtab syms = Symtab.instance(task.getContext());
aoqi@0 187 Names names = Names.instance(task.getContext());
aoqi@0 188 Attribute.Compound proprietaryAnno =
aoqi@0 189 new Attribute.Compound(syms.proprietaryType,
aoqi@0 190 List.<Pair<Symbol.MethodSymbol,Attribute>>nil());
aoqi@0 191 Attribute.Compound[] profileAnnos = new Attribute.Compound[profiles.getProfileCount() + 1];
aoqi@0 192 Symbol.MethodSymbol profileValue = (MethodSymbol) syms.profileType.tsym.members().lookup(names.value).sym;
aoqi@0 193 for (int i = 1; i < profileAnnos.length; i++) {
aoqi@0 194 profileAnnos[i] = new Attribute.Compound(syms.profileType,
aoqi@0 195 List.<Pair<Symbol.MethodSymbol, Attribute>>of(
aoqi@0 196 new Pair<Symbol.MethodSymbol, Attribute>(profileValue, new Attribute.Constant(syms.intType, i))));
aoqi@0 197 }
aoqi@0 198
aoqi@0 199 Type.moreInfo = true;
aoqi@0 200 Types types = Types.instance(task.getContext());
aoqi@0 201 Pool pool = new Pool(types);
aoqi@0 202 for (JavaFileObject file : fm.list(jarLocation, "", EnumSet.of(CLASS), true)) {
aoqi@0 203 String className = fm.inferBinaryName(jarLocation, file);
aoqi@0 204 int index = className.lastIndexOf('.');
aoqi@0 205 String pckName = index == -1 ? "" : className.substring(0, index);
aoqi@0 206 boolean addLegacyAnnotation = false;
aoqi@0 207 if (documented.contains(pckName)) {
aoqi@0 208 if (!legacy.contains(pckName))
aoqi@0 209 crisp.add(pckName);
aoqi@0 210 // System.out.println("Documented: " + className);
aoqi@0 211 } else if (legacyProprietary.contains(pckName)) {
aoqi@0 212 addLegacyAnnotation = true;
aoqi@0 213 // System.out.println("Legacy proprietary: " + className);
aoqi@0 214 } else {
aoqi@0 215 // System.out.println("Hidden " + className);
aoqi@0 216 hiddenPackages.add(pckName);
aoqi@0 217 continue;
aoqi@0 218 }
aoqi@0 219 TypeSymbol sym = (TypeSymbol)compiler.resolveIdent(className);
aoqi@0 220 if (sym.kind != Kinds.TYP) {
aoqi@0 221 if (className.indexOf('$') < 0) {
aoqi@0 222 System.err.println("Ignoring (other) " + className + " : " + sym);
aoqi@0 223 System.err.println(" " + sym.getClass().getSimpleName() + " " + sym.type);
aoqi@0 224 }
aoqi@0 225 continue;
aoqi@0 226 }
aoqi@0 227 sym.complete();
aoqi@0 228 if (sym.getEnclosingElement().getKind() != ElementKind.PACKAGE) {
aoqi@0 229 System.err.println("Ignoring (bad) " + sym.getQualifiedName());
aoqi@0 230 continue;
aoqi@0 231 }
aoqi@0 232 ClassSymbol cs = (ClassSymbol) sym;
aoqi@0 233 if (addLegacyAnnotation) {
aoqi@0 234 cs.prependAttributes(List.of(proprietaryAnno));
aoqi@0 235 }
aoqi@0 236 int p = profiles.getProfile(cs.fullname.toString().replace(".", "/"));
aoqi@0 237 if (0 < p && p < profileAnnos.length)
aoqi@0 238 cs.prependAttributes(List.of(profileAnnos[p]));
aoqi@0 239 writeClass(pool, cs, writer);
aoqi@0 240 }
aoqi@0 241
aoqi@0 242 if (false) {
aoqi@0 243 for (String pckName : crisp)
aoqi@0 244 System.out.println("Crisp: " + pckName);
aoqi@0 245 for (String pckName : hiddenPackages)
aoqi@0 246 System.out.println("Hidden: " + pckName);
aoqi@0 247 for (String pckName : legacyProprietary)
aoqi@0 248 System.out.println("Legacy proprietary: " + pckName);
aoqi@0 249 for (String pckName : documented)
aoqi@0 250 System.out.println("Documented: " + pckName);
aoqi@0 251 }
aoqi@0 252 }
aoqi@0 253
aoqi@0 254 void writeClass(final Pool pool, final ClassSymbol cs, final ClassWriter writer)
aoqi@0 255 throws IOException
aoqi@0 256 {
aoqi@0 257 try {
aoqi@0 258 pool.reset();
aoqi@0 259 cs.pool = pool;
aoqi@0 260 writer.writeClass(cs);
aoqi@0 261 for (Scope.Entry e = cs.members().elems; e != null; e = e.sibling) {
aoqi@0 262 if (e.sym.kind == Kinds.TYP) {
aoqi@0 263 ClassSymbol nestedClass = (ClassSymbol)e.sym;
aoqi@0 264 nestedClass.complete();
aoqi@0 265 writeClass(pool, nestedClass, writer);
aoqi@0 266 }
aoqi@0 267 }
aoqi@0 268 } catch (ClassWriter.StringOverflow ex) {
aoqi@0 269 throw new RuntimeException(ex);
aoqi@0 270 } catch (ClassWriter.PoolOverflow ex) {
aoqi@0 271 throw new RuntimeException(ex);
aoqi@0 272 }
aoqi@0 273 }
aoqi@0 274
aoqi@0 275 public SourceVersion getSupportedSourceVersion() {
aoqi@0 276 return SourceVersion.latest();
aoqi@0 277 }
aoqi@0 278
aoqi@0 279 // used for debugging
aoqi@0 280 public static void main(String... args) {
aoqi@0 281 String rt_jar = args[0];
aoqi@0 282 String dest = args[1];
aoqi@0 283 args = new String[] {
aoqi@0 284 "-Xbootclasspath:" + rt_jar,
aoqi@0 285 "-XDprocess.packages",
aoqi@0 286 "-proc:only",
aoqi@0 287 "-processor",
aoqi@0 288 "com.sun.tools.javac.sym.CreateSymbols",
aoqi@0 289 "-Acom.sun.tools.javac.sym.Jar=" + rt_jar,
aoqi@0 290 "-Acom.sun.tools.javac.sym.Dest=" + dest,
aoqi@0 291 // <editor-fold defaultstate="collapsed">
aoqi@0 292 "java.applet",
aoqi@0 293 "java.awt",
aoqi@0 294 "java.awt.color",
aoqi@0 295 "java.awt.datatransfer",
aoqi@0 296 "java.awt.dnd",
aoqi@0 297 "java.awt.event",
aoqi@0 298 "java.awt.font",
aoqi@0 299 "java.awt.geom",
aoqi@0 300 "java.awt.im",
aoqi@0 301 "java.awt.im.spi",
aoqi@0 302 "java.awt.image",
aoqi@0 303 "java.awt.image.renderable",
aoqi@0 304 "java.awt.print",
aoqi@0 305 "java.beans",
aoqi@0 306 "java.beans.beancontext",
aoqi@0 307 "java.io",
aoqi@0 308 "java.lang",
aoqi@0 309 "java.lang.annotation",
aoqi@0 310 "java.lang.instrument",
aoqi@0 311 "java.lang.management",
aoqi@0 312 "java.lang.ref",
aoqi@0 313 "java.lang.reflect",
aoqi@0 314 "java.math",
aoqi@0 315 "java.net",
aoqi@0 316 "java.nio",
aoqi@0 317 "java.nio.channels",
aoqi@0 318 "java.nio.channels.spi",
aoqi@0 319 "java.nio.charset",
aoqi@0 320 "java.nio.charset.spi",
aoqi@0 321 "java.rmi",
aoqi@0 322 "java.rmi.activation",
aoqi@0 323 "java.rmi.dgc",
aoqi@0 324 "java.rmi.registry",
aoqi@0 325 "java.rmi.server",
aoqi@0 326 "java.security",
aoqi@0 327 "java.security.acl",
aoqi@0 328 "java.security.cert",
aoqi@0 329 "java.security.interfaces",
aoqi@0 330 "java.security.spec",
aoqi@0 331 "java.sql",
aoqi@0 332 "java.text",
aoqi@0 333 "java.text.spi",
aoqi@0 334 "java.util",
aoqi@0 335 "java.util.concurrent",
aoqi@0 336 "java.util.concurrent.atomic",
aoqi@0 337 "java.util.concurrent.locks",
aoqi@0 338 "java.util.jar",
aoqi@0 339 "java.util.logging",
aoqi@0 340 "java.util.prefs",
aoqi@0 341 "java.util.regex",
aoqi@0 342 "java.util.spi",
aoqi@0 343 "java.util.zip",
aoqi@0 344 "javax.accessibility",
aoqi@0 345 "javax.activation",
aoqi@0 346 "javax.activity",
aoqi@0 347 "javax.annotation",
aoqi@0 348 "javax.annotation.processing",
aoqi@0 349 "javax.crypto",
aoqi@0 350 "javax.crypto.interfaces",
aoqi@0 351 "javax.crypto.spec",
aoqi@0 352 "javax.imageio",
aoqi@0 353 "javax.imageio.event",
aoqi@0 354 "javax.imageio.metadata",
aoqi@0 355 "javax.imageio.plugins.jpeg",
aoqi@0 356 "javax.imageio.plugins.bmp",
aoqi@0 357 "javax.imageio.spi",
aoqi@0 358 "javax.imageio.stream",
aoqi@0 359 "javax.jws",
aoqi@0 360 "javax.jws.soap",
aoqi@0 361 "javax.lang.model",
aoqi@0 362 "javax.lang.model.element",
aoqi@0 363 "javax.lang.model.type",
aoqi@0 364 "javax.lang.model.util",
aoqi@0 365 "javax.management",
aoqi@0 366 "javax.management.loading",
aoqi@0 367 "javax.management.monitor",
aoqi@0 368 "javax.management.relation",
aoqi@0 369 "javax.management.openmbean",
aoqi@0 370 "javax.management.timer",
aoqi@0 371 "javax.management.modelmbean",
aoqi@0 372 "javax.management.remote",
aoqi@0 373 "javax.management.remote.rmi",
aoqi@0 374 "javax.naming",
aoqi@0 375 "javax.naming.directory",
aoqi@0 376 "javax.naming.event",
aoqi@0 377 "javax.naming.ldap",
aoqi@0 378 "javax.naming.spi",
aoqi@0 379 "javax.net",
aoqi@0 380 "javax.net.ssl",
aoqi@0 381 "javax.print",
aoqi@0 382 "javax.print.attribute",
aoqi@0 383 "javax.print.attribute.standard",
aoqi@0 384 "javax.print.event",
aoqi@0 385 "javax.rmi",
aoqi@0 386 "javax.rmi.CORBA",
aoqi@0 387 "javax.rmi.ssl",
aoqi@0 388 "javax.script",
aoqi@0 389 "javax.security.auth",
aoqi@0 390 "javax.security.auth.callback",
aoqi@0 391 "javax.security.auth.kerberos",
aoqi@0 392 "javax.security.auth.login",
aoqi@0 393 "javax.security.auth.spi",
aoqi@0 394 "javax.security.auth.x500",
aoqi@0 395 "javax.security.cert",
aoqi@0 396 "javax.security.sasl",
aoqi@0 397 "javax.sound.sampled",
aoqi@0 398 "javax.sound.sampled.spi",
aoqi@0 399 "javax.sound.midi",
aoqi@0 400 "javax.sound.midi.spi",
aoqi@0 401 "javax.sql",
aoqi@0 402 "javax.sql.rowset",
aoqi@0 403 "javax.sql.rowset.serial",
aoqi@0 404 "javax.sql.rowset.spi",
aoqi@0 405 "javax.swing",
aoqi@0 406 "javax.swing.border",
aoqi@0 407 "javax.swing.colorchooser",
aoqi@0 408 "javax.swing.filechooser",
aoqi@0 409 "javax.swing.event",
aoqi@0 410 "javax.swing.table",
aoqi@0 411 "javax.swing.text",
aoqi@0 412 "javax.swing.text.html",
aoqi@0 413 "javax.swing.text.html.parser",
aoqi@0 414 "javax.swing.text.rtf",
aoqi@0 415 "javax.swing.tree",
aoqi@0 416 "javax.swing.undo",
aoqi@0 417 "javax.swing.plaf",
aoqi@0 418 "javax.swing.plaf.basic",
aoqi@0 419 "javax.swing.plaf.metal",
aoqi@0 420 "javax.swing.plaf.multi",
aoqi@0 421 "javax.swing.plaf.synth",
aoqi@0 422 "javax.tools",
aoqi@0 423 "javax.transaction",
aoqi@0 424 "javax.transaction.xa",
aoqi@0 425 "javax.xml.parsers",
aoqi@0 426 "javax.xml.bind",
aoqi@0 427 "javax.xml.bind.annotation",
aoqi@0 428 "javax.xml.bind.annotation.adapters",
aoqi@0 429 "javax.xml.bind.attachment",
aoqi@0 430 "javax.xml.bind.helpers",
aoqi@0 431 "javax.xml.bind.util",
aoqi@0 432 "javax.xml.soap",
aoqi@0 433 "javax.xml.ws",
aoqi@0 434 "javax.xml.ws.handler",
aoqi@0 435 "javax.xml.ws.handler.soap",
aoqi@0 436 "javax.xml.ws.http",
aoqi@0 437 "javax.xml.ws.soap",
aoqi@0 438 "javax.xml.ws.spi",
aoqi@0 439 "javax.xml.transform",
aoqi@0 440 "javax.xml.transform.sax",
aoqi@0 441 "javax.xml.transform.dom",
aoqi@0 442 "javax.xml.transform.stax",
aoqi@0 443 "javax.xml.transform.stream",
aoqi@0 444 "javax.xml",
aoqi@0 445 "javax.xml.crypto",
aoqi@0 446 "javax.xml.crypto.dom",
aoqi@0 447 "javax.xml.crypto.dsig",
aoqi@0 448 "javax.xml.crypto.dsig.dom",
aoqi@0 449 "javax.xml.crypto.dsig.keyinfo",
aoqi@0 450 "javax.xml.crypto.dsig.spec",
aoqi@0 451 "javax.xml.datatype",
aoqi@0 452 "javax.xml.validation",
aoqi@0 453 "javax.xml.namespace",
aoqi@0 454 "javax.xml.xpath",
aoqi@0 455 "javax.xml.stream",
aoqi@0 456 "javax.xml.stream.events",
aoqi@0 457 "javax.xml.stream.util",
aoqi@0 458 "org.ietf.jgss",
aoqi@0 459 "org.omg.CORBA",
aoqi@0 460 "org.omg.CORBA.DynAnyPackage",
aoqi@0 461 "org.omg.CORBA.ORBPackage",
aoqi@0 462 "org.omg.CORBA.TypeCodePackage",
aoqi@0 463 "org.omg.stub.java.rmi",
aoqi@0 464 "org.omg.CORBA.portable",
aoqi@0 465 "org.omg.CORBA_2_3",
aoqi@0 466 "org.omg.CORBA_2_3.portable",
aoqi@0 467 "org.omg.CosNaming",
aoqi@0 468 "org.omg.CosNaming.NamingContextExtPackage",
aoqi@0 469 "org.omg.CosNaming.NamingContextPackage",
aoqi@0 470 "org.omg.SendingContext",
aoqi@0 471 "org.omg.PortableServer",
aoqi@0 472 "org.omg.PortableServer.CurrentPackage",
aoqi@0 473 "org.omg.PortableServer.POAPackage",
aoqi@0 474 "org.omg.PortableServer.POAManagerPackage",
aoqi@0 475 "org.omg.PortableServer.ServantLocatorPackage",
aoqi@0 476 "org.omg.PortableServer.portable",
aoqi@0 477 "org.omg.PortableInterceptor",
aoqi@0 478 "org.omg.PortableInterceptor.ORBInitInfoPackage",
aoqi@0 479 "org.omg.Messaging",
aoqi@0 480 "org.omg.IOP",
aoqi@0 481 "org.omg.IOP.CodecFactoryPackage",
aoqi@0 482 "org.omg.IOP.CodecPackage",
aoqi@0 483 "org.omg.Dynamic",
aoqi@0 484 "org.omg.DynamicAny",
aoqi@0 485 "org.omg.DynamicAny.DynAnyPackage",
aoqi@0 486 "org.omg.DynamicAny.DynAnyFactoryPackage",
aoqi@0 487 "org.w3c.dom",
aoqi@0 488 "org.w3c.dom.events",
aoqi@0 489 "org.w3c.dom.bootstrap",
aoqi@0 490 "org.w3c.dom.ls",
aoqi@0 491 "org.xml.sax",
aoqi@0 492 "org.xml.sax.ext",
aoqi@0 493 "org.xml.sax.helpers",
aoqi@0 494 "com.sun.java.browser.dom",
aoqi@0 495 "org.w3c.dom",
aoqi@0 496 "org.w3c.dom.bootstrap",
aoqi@0 497 "org.w3c.dom.ls",
aoqi@0 498 "org.w3c.dom.ranges",
aoqi@0 499 "org.w3c.dom.traversal",
aoqi@0 500 "org.w3c.dom.html",
aoqi@0 501 "org.w3c.dom.stylesheets",
aoqi@0 502 "org.w3c.dom.css",
aoqi@0 503 "org.w3c.dom.events",
aoqi@0 504 "org.w3c.dom.views",
aoqi@0 505 "com.sun.management",
aoqi@0 506 "com.sun.security.auth",
aoqi@0 507 "com.sun.security.auth.callback",
aoqi@0 508 "com.sun.security.auth.login",
aoqi@0 509 "com.sun.security.auth.module",
aoqi@0 510 "com.sun.security.jgss",
aoqi@0 511 "com.sun.net.httpserver",
aoqi@0 512 "com.sun.net.httpserver.spi",
aoqi@0 513 "javax.smartcardio"
aoqi@0 514 // </editor-fold>
aoqi@0 515 };
aoqi@0 516 com.sun.tools.javac.Main.compile(args);
aoqi@0 517 }
aoqi@0 518
aoqi@0 519 }

mercurial