All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.codehaus.groovy.vmplugin.v9.Java9 Maven / Gradle / Ivy

There is a newer version: 5.0.0-alpha-8
Show newest version
/*
 *  Licensed to the Apache Software Foundation (ASF) under one
 *  or more contributor license agreements.  See the NOTICE file
 *  distributed with this work for additional information
 *  regarding copyright ownership.  The ASF licenses this file
 *  to you under the Apache License, Version 2.0 (the
 *  "License"); you may not use this file except in compliance
 *  with the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an
 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  KIND, either express or implied.  See the License for the
 *  specific language governing permissions and limitations
 *  under the License.
 */
package org.codehaus.groovy.vmplugin.v9;

import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyRuntimeException;
import groovy.lang.MetaClass;
import groovy.lang.MetaMethod;
import groovy.lang.Tuple;
import groovy.lang.Tuple2;
import org.codehaus.groovy.GroovyBugError;
import org.codehaus.groovy.reflection.CachedClass;
import org.codehaus.groovy.reflection.CachedMethod;
import org.codehaus.groovy.reflection.ReflectionUtils;
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
import org.codehaus.groovy.vmplugin.v8.Java8;

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.module.ModuleDescriptor;
import java.lang.module.ModuleFinder;
import java.lang.module.ModuleReference;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.math.BigInteger;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;

/**
 * Additional Java 9 based functions will be added here as needed.
 */
public class Java9 extends Java8 {
    private static final Logger LOGGER = Logger.getLogger(Java9.class.getName());

    private final Class[] PLUGIN_DGM;

    public Java9() {
        super();
        List> dgmClasses = new ArrayList<>();
        Collections.addAll(dgmClasses, super.getPluginDefaultGroovyMethods());
        dgmClasses.add(PluginDefaultGroovyMethods.class);
        PLUGIN_DGM = dgmClasses.toArray(new Class[0]);
    }

    @Override
    public Map> getDefaultImportClasses(String[] packageNames) {
        List javaPns = new ArrayList<>(4);
        List groovyPns = new ArrayList<>(4);
        for (String prefix : packageNames) {
            String pn = prefix.substring(0, prefix.length() - 1).replace('.', '/');

            if (pn.startsWith("java/")) {
                javaPns.add(pn);
            } else if (pn.startsWith("groovy/")) {
                groovyPns.add(pn);
            } else {
                throw new GroovyBugError("unexpected package: " + pn);
            }
        }

        Map> result = new LinkedHashMap<>(2048);
        try (GroovyClassLoader gcl = new GroovyClassLoader(this.getClass().getClassLoader())) {
            try {
                URI gsLocation = DefaultGroovyMethods.getLocation(gcl.loadClass("groovy.lang.GroovySystem")).toURI();
                result.putAll(doFindClasses(gsLocation, "groovy", groovyPns));

                // in production environment, groovy-core classes, e.g. `GroovySystem`(java class) and `GrapeIvy`(groovy class) are all packaged in the groovy-core jar file,
                // but in Groovy development environment, groovy-core classes are distributed in different directories
                URI giLocation = DefaultGroovyMethods.getLocation(gcl.loadClass("groovy.grape.GrapeIvy")).toURI();
                if (!gsLocation.equals(giLocation)) {
                    result.putAll(doFindClasses(giLocation, "groovy", groovyPns));
                }
            } finally {
                result.putAll(doFindClasses(URI.create("jrt:/modules/java.base/"), "java", javaPns));
            }
        } catch (Exception ignore) {
            if (LOGGER.isLoggable(Level.FINEST)) {
                LOGGER.finest("[WARNING] Failed to find default imported classes:\n" + DefaultGroovyMethods.asString(ignore));
            }
        }

        return result;
    }

    private static Map> doFindClasses(URI uri, String packageName, List defaultPackageNames) {
        Map> result = ClassFinder.find(uri, packageName, true)
                .entrySet().stream()
                .filter(e -> e.getValue().stream().anyMatch(defaultPackageNames::contains))
                .collect(
                        Collectors.toMap(
                                Map.Entry::getKey,
                                entry -> entry.getValue().stream()
                                        .filter(e -> defaultPackageNames.contains(e))
                                        .map(e -> e.replace('/', '.') + ".")
                                        .collect(Collectors.toSet())
                        )
                );
        return result;
    }

    private static class LookupHolder {
        private static final Method PRIVATE_LOOKUP;
        private static final Constructor LOOKUP_Constructor;

        static {
            Constructor lookup = null;
            Method privateLookup = null;
            try { // java 9
                privateLookup = MethodHandles.class.getMethod("privateLookupIn", Class.class, MethodHandles.Lookup.class);
            } catch (final NoSuchMethodException | RuntimeException e) { // java 8 or fallback if anything else goes wrong
                try {
                    lookup = MethodHandles.Lookup.class.getDeclaredConstructor(Class.class, Integer.TYPE);
                    if (!lookup.isAccessible()) {
                        ReflectionUtils.trySetAccessible(lookup);
                    }
                } catch (final NoSuchMethodException ex) {
                    throw new IllegalStateException("Incompatible JVM", e);
                }
            }
            PRIVATE_LOOKUP = privateLookup;
            LOOKUP_Constructor = lookup;
        }
    }

    private static Constructor getLookupConstructor() {
        return LookupHolder.LOOKUP_Constructor;
    }

    private static Method getPrivateLookup() {
        return LookupHolder.PRIVATE_LOOKUP;
    }

    public static MethodHandles.Lookup of(final Class declaringClass) {
        try {
            final Method privateLookup = getPrivateLookup();
            if (privateLookup != null) {
                return (MethodHandles.Lookup) privateLookup.invoke(null, declaringClass, MethodHandles.lookup());
            }
            return getLookupConstructor().newInstance(declaringClass, MethodHandles.Lookup.PRIVATE).in(declaringClass);
        } catch (final IllegalAccessException | InstantiationException e) {
            throw new IllegalArgumentException(e);
        } catch (final InvocationTargetException e) {
            throw new GroovyRuntimeException(e);
        }
    }

    @Override
    public Class[] getPluginDefaultGroovyMethods() {
        return PLUGIN_DGM;
    }

    @Override
    public int getVersion() {
        return 9;
    }

    @Override
    public Object getInvokeSpecialHandle(Method method, Object receiver) {
        final Class receiverType = receiver.getClass();
        try {
            return of(receiverType).unreflectSpecial(method, receiverType).bindTo(receiver);
        } catch (ReflectiveOperationException e) {
            return super.getInvokeSpecialHandle(method, receiver);
        }
    }

    /**
     * This method may be used by a caller in class C to check whether to enable access to a member of declaring class D successfully
     * if {@link Java8#checkCanSetAccessible(java.lang.reflect.AccessibleObject, java.lang.Class)} returns true and any of the following hold:
     * 

* 1) C and D are in the same module. * 2) The member is public and D is public in a package that the module containing D exports to at least the module containing C. * 3) The member is protected static, D is public in a package that the module containing D exports to at least the module containing C, and C is a subclass of D. * 4) D is in a package that the module containing D opens to at least the module containing C. All packages in unnamed and open modules are open to all modules and so this method always succeeds when D is in an unnamed or open module. * * @param accessibleObject the accessible object to check * @param callerClass the callerClass to invoke {@code setAccessible} * @return the check result */ public boolean checkCanSetAccessible(AccessibleObject accessibleObject, Class callerClass) { if (!super.checkCanSetAccessible(accessibleObject, callerClass)) return false; if (callerClass == MethodHandle.class) { throw new IllegalCallerException(); // should not happen } if (!(accessibleObject instanceof Member)) { throw new IllegalArgumentException("accessibleObject should be a member of type: " + accessibleObject); // should not happen } Member member = (Member) accessibleObject; Class declaringClass = member.getDeclaringClass(); Module callerModule = callerClass.getModule(); Module declaringModule = declaringClass.getModule(); if (callerModule == declaringModule) return true; if (callerModule == Object.class.getModule()) return true; if (!declaringModule.isNamed()) return true; int modifiers = member.getModifiers(); return checkAccessible(callerClass, declaringClass, modifiers, true); } @Override public boolean trySetAccessible(AccessibleObject ao) { return ao.trySetAccessible(); } @Override public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class caller) { if (!(metaMethod instanceof CachedMethod)) { return metaMethod; } CachedMethod cachedMethod = (CachedMethod) metaMethod; CachedClass methodDeclaringClass = cachedMethod.getDeclaringClass(); if (null == methodDeclaringClass) { return metaMethod; } if (null == caller) { caller = ReflectionUtils.class; // "set accessible" are done via `org.codehaus.groovy.reflection.ReflectionUtils` as shown in warnings } return getOrTransformMetaMethod(metaClass, caller, cachedMethod); } private CachedMethod getOrTransformMetaMethod(MetaClass metaClass, Class caller, CachedMethod cachedMethod) { CachedMethod transformedMethod = cachedMethod.getTransformedMethod(); if (null != transformedMethod) { return transformedMethod; } transformedMethod = doTransformMetaMethod(metaClass, cachedMethod, caller); cachedMethod.setTransformedMethod(transformedMethod); return transformedMethod; } private CachedMethod doTransformMetaMethod(MetaClass metaClass, CachedMethod metaMethod, Class caller) { CachedClass methodDeclaringClass = metaMethod.getDeclaringClass(); Class declaringClass = methodDeclaringClass.getTheClass(); int methodModifiers = metaMethod.getModifiers(); // if caller can access the method, // no need to transform the meta method if (checkAccessible(caller, declaringClass, methodModifiers, false)) { return metaMethod; } Class[] params = metaMethod.getPT(); Class theClass = metaClass.getTheClass(); if (declaringClass == theClass) { if (BigInteger.class == theClass) { CachedMethod bigIntegerMetaMethod = transformBigIntegerMetaMethod(metaMethod, params); if (bigIntegerMetaMethod != metaMethod) { return bigIntegerMetaMethod; } } // GROOVY-9081 "3) Access public members of private class", e.g. Collections.unmodifiableMap([:]).toString() // try to find the visible method from its superclasses List> classList = findSuperclasses(theClass); classList.add(0, theClass); for (Class sc : classList) { Optional optionalMetaMethod = getAccessibleMetaMethod(metaMethod, params, caller, sc, true); if (optionalMetaMethod.isPresent()) { return optionalMetaMethod.get(); } } return metaMethod; } else if (declaringClass.isAssignableFrom(theClass)) { // if caller can not access the method, // try to find the corresponding method in its derived class // GROOVY-9081 Sub-class derives the protected members from public class, "Invoke the members on the sub class instances" // e.g. StringBuilder sb = new StringBuilder(); sb.setLength(0); // `setLength` is the method of `AbstractStringBuilder`, which is `package-private` Optional optionalMetaMethod = getAccessibleMetaMethod(metaMethod, params, caller, theClass, false); if (optionalMetaMethod.isPresent()) { return optionalMetaMethod.get(); } } return metaMethod; } private static CachedMethod transformBigIntegerMetaMethod(CachedMethod metaMethod, Class[] params) { if (1 == params.length && MULTIPLY.equals(metaMethod.getName())) { Class param = params[0]; if (Long.class == param || long.class == param || Integer.class == param || int.class == param || Short.class == param || short.class == param) { return new CachedMethod(BigIntegerMultiplyMethodHolder.MULTIPLY_METHOD); } } return metaMethod; } private Optional getAccessibleMetaMethod(CachedMethod metaMethod, Class[] params, Class caller, Class sc, boolean declared) { List metaMethodList = getMetaMethods(metaMethod, params, sc, declared); for (CachedMethod mm : metaMethodList) { if (checkAccessible(caller, mm.getDeclaringClass().getTheClass(), mm.getModifiers(), false)) { return Optional.of(mm); } } return Optional.empty(); } private static List getMetaMethods(CachedMethod metaMethod, Class[] params, Class sc, boolean declared) { String metaMethodName = metaMethod.getName(); List optionalMethodList = declared ? ReflectionUtils.getDeclaredMethods(sc, metaMethodName, params) : ReflectionUtils.getMethods(sc, metaMethodName, params); return optionalMethodList.stream().map(CachedMethod::new).collect(Collectors.toList()); } @Override public boolean checkAccessible(Class callerClass, Class declaringClass, int memberModifiers, boolean allowIllegalAccess) { Module callerModule = callerClass.getModule(); Module declaringModule = declaringClass.getModule(); String pn = declaringClass.getPackageName(); boolean unnamedModuleAccessNamedModule = !callerModule.isNamed() && declaringModule.isNamed(); boolean toCheckIllegalAccess = !allowIllegalAccess && unnamedModuleAccessNamedModule; // class is public and package is exported to callerClass boolean isClassPublic = Modifier.isPublic(declaringClass.getModifiers()); if (isClassPublic && declaringModule.isExported(pn, callerModule)) { // member is public if (Modifier.isPublic(memberModifiers)) { return !(toCheckIllegalAccess && isExportedForIllegalAccess(declaringModule, pn)); } // member is protected-static if (Modifier.isProtected(memberModifiers) && Modifier.isStatic(memberModifiers) && isSubclassOf(callerClass, declaringClass)) { return !(toCheckIllegalAccess && isExportedForIllegalAccess(declaringModule, pn)); } } // package is open to callerClass if (declaringModule.isOpen(pn, callerModule)) { return !(toCheckIllegalAccess && isOpenedForIllegalAccess(declaringModule, pn)); } return false; } private static boolean isExportedForIllegalAccess(Module declaringModule, String pn) { return concealedPackageList(declaringModule).contains(pn); } private static boolean isOpenedForIllegalAccess(Module declaringModule, String pn) { if (isExportedForIllegalAccess(declaringModule, pn)) return true; return exportedPackageList(declaringModule).contains(pn); } private static boolean isSubclassOf(Class queryClass, Class ofClass) { while (queryClass != null) { if (queryClass == ofClass) { return true; } queryClass = queryClass.getSuperclass(); } return false; } private static List> findSuperclasses(Class clazz) { List> result = new LinkedList<>(); for (Class c = clazz.getSuperclass(); null != c; c = c.getSuperclass()) { result.add(c); } return result; } private static Set concealedPackageList(Module module) { return CONCEALED_PACKAGES_TO_OPEN.computeIfAbsent(module.getName(), m -> new HashSet<>()); } private static Set exportedPackageList(Module module) { return EXPORTED_PACKAGES_TO_OPEN.computeIfAbsent(module.getName(), m -> new HashSet<>()); } private static final Map> CONCEALED_PACKAGES_TO_OPEN; private static final Map> EXPORTED_PACKAGES_TO_OPEN; static { Tuple2>, Map>> tuple2 = findConcealedAndExportedPackagesToOpen(); CONCEALED_PACKAGES_TO_OPEN = tuple2.getV1(); EXPORTED_PACKAGES_TO_OPEN = tuple2.getV2(); } private static Tuple2>, Map>> findConcealedAndExportedPackagesToOpen() { ModuleFinder finder = ModuleFinder.ofSystem(); Map map = new HashMap<>(); finder.findAll().stream() .map(ModuleReference::descriptor) .forEach(md -> md.packages().forEach(pn -> map.putIfAbsent(pn, md))); final Map> concealedPackagesToOpen = new ConcurrentHashMap<>(); final Map> exportedPackagesToOpen = new ConcurrentHashMap<>(); Arrays.stream(JAVA8_PACKAGES()) .forEach(pn -> { ModuleDescriptor descriptor = map.get(pn); if (descriptor != null && !isOpen(descriptor, pn)) { String name = descriptor.name(); if (isExported(descriptor, pn)) { exportedPackagesToOpen.computeIfAbsent(name, k -> new HashSet<>()).add(pn); } else { concealedPackagesToOpen.computeIfAbsent(name, k -> new HashSet<>()).add(pn); } } }); return Tuple.tuple(concealedPackagesToOpen, exportedPackagesToOpen); } private static boolean isExported(ModuleDescriptor descriptor, String pn) { return descriptor.exports() .stream() .anyMatch(e -> e.source().equals(pn) && !e.isQualified()); } private static boolean isOpen(ModuleDescriptor descriptor, String pn) { return descriptor.opens() .stream() .anyMatch(e -> e.source().equals(pn) && !e.isQualified()); } private static final String MULTIPLY = "multiply"; private static class BigIntegerMultiplyMethodHolder { private static final Method MULTIPLY_METHOD; static { try { MULTIPLY_METHOD = BigInteger.class.getDeclaredMethod(MULTIPLY, BigInteger.class); } catch (NoSuchMethodException | SecurityException e) { throw new GroovyBugError("Failed to find " + MULTIPLY + " method of BigInteger", e); } } } private static String[] JAVA8_PACKAGES() { // The following package list should NOT be changed! return new String[] { "apple.applescript", "apple.laf", "apple.launcher", "apple.security", "com.apple.concurrent", "com.apple.eawt", "com.apple.eawt.event", "com.apple.eio", "com.apple.laf", "com.apple.laf.resources", "com.oracle.jrockit.jfr", "com.oracle.jrockit.jfr.client", "com.oracle.jrockit.jfr.management", "com.oracle.security.ucrypto", "com.oracle.util", "com.oracle.webservices.internal.api", "com.oracle.webservices.internal.api.databinding", "com.oracle.webservices.internal.api.message", "com.oracle.webservices.internal.impl.encoding", "com.oracle.webservices.internal.impl.internalspi.encoding", "com.oracle.xmlns.internal.webservices.jaxws_databinding", "com.sun.accessibility.internal.resources", "com.sun.activation.registries", "com.sun.awt", "com.sun.beans", "com.sun.beans.decoder", "com.sun.beans.editors", "com.sun.beans.finder", "com.sun.beans.infos", "com.sun.beans.util", "com.sun.codemodel.internal", "com.sun.codemodel.internal.fmt", "com.sun.codemodel.internal.util", "com.sun.codemodel.internal.writer", "com.sun.corba.se.impl.activation", "com.sun.corba.se.impl.copyobject", "com.sun.corba.se.impl.corba", "com.sun.corba.se.impl.dynamicany", "com.sun.corba.se.impl.encoding", "com.sun.corba.se.impl.interceptors", "com.sun.corba.se.impl.io", "com.sun.corba.se.impl.ior", "com.sun.corba.se.impl.ior.iiop", "com.sun.corba.se.impl.javax.rmi", "com.sun.corba.se.impl.javax.rmi.CORBA", "com.sun.corba.se.impl.legacy.connection", "com.sun.corba.se.impl.logging", "com.sun.corba.se.impl.monitoring", "com.sun.corba.se.impl.naming.cosnaming", "com.sun.corba.se.impl.naming.namingutil", "com.sun.corba.se.impl.naming.pcosnaming", "com.sun.corba.se.impl.oa", "com.sun.corba.se.impl.oa.poa", "com.sun.corba.se.impl.oa.toa", "com.sun.corba.se.impl.orb", "com.sun.corba.se.impl.orbutil", "com.sun.corba.se.impl.orbutil.closure", "com.sun.corba.se.impl.orbutil.concurrent", "com.sun.corba.se.impl.orbutil.fsm", "com.sun.corba.se.impl.orbutil.graph", "com.sun.corba.se.impl.orbutil.threadpool", "com.sun.corba.se.impl.presentation.rmi", "com.sun.corba.se.impl.protocol", "com.sun.corba.se.impl.protocol.giopmsgheaders", "com.sun.corba.se.impl.resolver", "com.sun.corba.se.impl.transport", "com.sun.corba.se.impl.util", "com.sun.corba.se.internal.CosNaming", "com.sun.corba.se.internal.Interceptors", "com.sun.corba.se.internal.POA", "com.sun.corba.se.internal.corba", "com.sun.corba.se.internal.iiop", "com.sun.corba.se.org.omg.CORBA", "com.sun.corba.se.pept.broker", "com.sun.corba.se.pept.encoding", "com.sun.corba.se.pept.protocol", "com.sun.corba.se.pept.transport", "com.sun.corba.se.spi.activation", "com.sun.corba.se.spi.activation.InitialNameServicePackage", "com.sun.corba.se.spi.activation.LocatorPackage", "com.sun.corba.se.spi.activation.RepositoryPackage", "com.sun.corba.se.spi.copyobject", "com.sun.corba.se.spi.encoding", "com.sun.corba.se.spi.extension", "com.sun.corba.se.spi.ior", "com.sun.corba.se.spi.ior.iiop", "com.sun.corba.se.spi.legacy.connection", "com.sun.corba.se.spi.legacy.interceptor", "com.sun.corba.se.spi.logging", "com.sun.corba.se.spi.monitoring", "com.sun.corba.se.spi.oa", "com.sun.corba.se.spi.orb", "com.sun.corba.se.spi.orbutil.closure", "com.sun.corba.se.spi.orbutil.fsm", "com.sun.corba.se.spi.orbutil.proxy", "com.sun.corba.se.spi.orbutil.threadpool", "com.sun.corba.se.spi.presentation.rmi", "com.sun.corba.se.spi.protocol", "com.sun.corba.se.spi.resolver", "com.sun.corba.se.spi.servicecontext", "com.sun.corba.se.spi.transport", "com.sun.crypto.provider", "com.sun.demo.jvmti.hprof", "com.sun.deploy.uitoolkit.impl.fx", "com.sun.deploy.uitoolkit.impl.fx.ui", "com.sun.deploy.uitoolkit.impl.fx.ui.resources", "com.sun.glass.events", "com.sun.glass.events.mac", "com.sun.glass.ui", "com.sun.glass.ui.delegate", "com.sun.glass.ui.gtk", "com.sun.glass.ui.mac", "com.sun.glass.ui.win", "com.sun.glass.utils", "com.sun.image.codec.jpeg", "com.sun.imageio.plugins.bmp", "com.sun.imageio.plugins.common", "com.sun.imageio.plugins.gif", "com.sun.imageio.plugins.jpeg", "com.sun.imageio.plugins.png", "com.sun.imageio.plugins.wbmp", "com.sun.imageio.spi", "com.sun.imageio.stream", "com.sun.istack.internal", "com.sun.istack.internal.localization", "com.sun.istack.internal.logging", "com.sun.istack.internal.tools", "com.sun.jarsigner", "com.sun.java.accessibility", "com.sun.java.accessibility.util", "com.sun.java.accessibility.util.java.awt", "com.sun.java.browser.dom", "com.sun.java.browser.net", "com.sun.java.swing", "com.sun.java.swing.plaf.gtk", "com.sun.java.swing.plaf.gtk.resources", "com.sun.java.swing.plaf.motif", "com.sun.java.swing.plaf.motif.resources", "com.sun.java.swing.plaf.nimbus", "com.sun.java.swing.plaf.windows", "com.sun.java.swing.plaf.windows.resources", "com.sun.java.util.jar.pack", "com.sun.java_cup.internal.runtime", "com.sun.javadoc", "com.sun.javafx", "com.sun.javafx.animation", "com.sun.javafx.applet", "com.sun.javafx.application", "com.sun.javafx.beans", "com.sun.javafx.beans.event", "com.sun.javafx.binding", "com.sun.javafx.charts", "com.sun.javafx.collections", "com.sun.javafx.css", "com.sun.javafx.css.converters", "com.sun.javafx.css.parser", "com.sun.javafx.cursor", "com.sun.javafx.effect", "com.sun.javafx.embed", "com.sun.javafx.event", "com.sun.javafx.font", "com.sun.javafx.font.coretext", "com.sun.javafx.font.directwrite", "com.sun.javafx.font.freetype", "com.sun.javafx.font.t2k", "com.sun.javafx.fxml", "com.sun.javafx.fxml.builder", "com.sun.javafx.fxml.expression", "com.sun.javafx.geom", "com.sun.javafx.geom.transform", "com.sun.javafx.geometry", "com.sun.javafx.iio", "com.sun.javafx.iio.bmp", "com.sun.javafx.iio.common", "com.sun.javafx.iio.gif", "com.sun.javafx.iio.ios", "com.sun.javafx.iio.jpeg", "com.sun.javafx.iio.png", "com.sun.javafx.image", "com.sun.javafx.image.impl", "com.sun.javafx.jmx", "com.sun.javafx.logging", "com.sun.javafx.media", "com.sun.javafx.menu", "com.sun.javafx.perf", "com.sun.javafx.print", "com.sun.javafx.property", "com.sun.javafx.property.adapter", "com.sun.javafx.robot", "com.sun.javafx.robot.impl", "com.sun.javafx.runtime", "com.sun.javafx.runtime.async", "com.sun.javafx.runtime.eula", "com.sun.javafx.scene", "com.sun.javafx.scene.control", "com.sun.javafx.scene.control.behavior", "com.sun.javafx.scene.control.skin", "com.sun.javafx.scene.control.skin.resources", "com.sun.javafx.scene.input", "com.sun.javafx.scene.layout.region", "com.sun.javafx.scene.paint", "com.sun.javafx.scene.shape", "com.sun.javafx.scene.text", "com.sun.javafx.scene.transform", "com.sun.javafx.scene.traversal", "com.sun.javafx.scene.web", "com.sun.javafx.scene.web.behavior", "com.sun.javafx.scene.web.skin", "com.sun.javafx.sg.prism", "com.sun.javafx.sg.prism.web", "com.sun.javafx.stage", "com.sun.javafx.text", "com.sun.javafx.tk", "com.sun.javafx.tk.quantum", "com.sun.javafx.util", "com.sun.javafx.webkit", "com.sun.javafx.webkit.drt", "com.sun.javafx.webkit.prism", "com.sun.javafx.webkit.prism.theme", "com.sun.javafx.webkit.theme", "com.sun.jdi", "com.sun.jdi.connect", "com.sun.jdi.connect.spi", "com.sun.jdi.event", "com.sun.jdi.request", "com.sun.jmx.defaults", "com.sun.jmx.interceptor", "com.sun.jmx.mbeanserver", "com.sun.jmx.remote.internal", "com.sun.jmx.remote.protocol.iiop", "com.sun.jmx.remote.protocol.rmi", "com.sun.jmx.remote.security", "com.sun.jmx.remote.util", "com.sun.jmx.snmp", "com.sun.jmx.snmp.IPAcl", "com.sun.jmx.snmp.agent", "com.sun.jmx.snmp.daemon", "com.sun.jmx.snmp.defaults", "com.sun.jmx.snmp.internal", "com.sun.jmx.snmp.mpm", "com.sun.jmx.snmp.tasks", "com.sun.jndi.cosnaming", "com.sun.jndi.dns", "com.sun.jndi.ldap", "com.sun.jndi.ldap.ext", "com.sun.jndi.ldap.pool", "com.sun.jndi.ldap.sasl", "com.sun.jndi.rmi.registry", "com.sun.jndi.toolkit.corba", "com.sun.jndi.toolkit.ctx", "com.sun.jndi.toolkit.dir", "com.sun.jndi.toolkit.url", "com.sun.jndi.url.corbaname", "com.sun.jndi.url.dns", "com.sun.jndi.url.iiop", "com.sun.jndi.url.iiopname", "com.sun.jndi.url.ldap", "com.sun.jndi.url.ldaps", "com.sun.jndi.url.rmi", "com.sun.management", "com.sun.management.jmx", "com.sun.media.jfxmedia", "com.sun.media.jfxmedia.control", "com.sun.media.jfxmedia.effects", "com.sun.media.jfxmedia.events", "com.sun.media.jfxmedia.locator", "com.sun.media.jfxmedia.logging", "com.sun.media.jfxmedia.track", "com.sun.media.jfxmediaimpl", "com.sun.media.jfxmediaimpl.platform", "com.sun.media.jfxmediaimpl.platform.gstreamer", "com.sun.media.jfxmediaimpl.platform.ios", "com.sun.media.jfxmediaimpl.platform.java", "com.sun.media.jfxmediaimpl.platform.osx", "com.sun.media.sound", "com.sun.naming.internal", "com.sun.net.httpserver", "com.sun.net.httpserver.spi", "com.sun.net.ssl", "com.sun.net.ssl.internal.ssl", "com.sun.net.ssl.internal.www.protocol.https", "com.sun.nio.file", "com.sun.nio.sctp", "com.sun.nio.zipfs", "com.sun.openpisces", "com.sun.org.apache.bcel.internal", "com.sun.org.apache.bcel.internal.classfile", "com.sun.org.apache.bcel.internal.generic", "com.sun.org.apache.bcel.internal.util", "com.sun.org.apache.regexp.internal", "com.sun.org.apache.xalan.internal", "com.sun.org.apache.xalan.internal.extensions", "com.sun.org.apache.xalan.internal.lib", "com.sun.org.apache.xalan.internal.res", "com.sun.org.apache.xalan.internal.templates", "com.sun.org.apache.xalan.internal.utils", "com.sun.org.apache.xalan.internal.xslt", "com.sun.org.apache.xalan.internal.xsltc", "com.sun.org.apache.xalan.internal.xsltc.cmdline", "com.sun.org.apache.xalan.internal.xsltc.cmdline.getopt", "com.sun.org.apache.xalan.internal.xsltc.compiler", "com.sun.org.apache.xalan.internal.xsltc.compiler.util", "com.sun.org.apache.xalan.internal.xsltc.dom", "com.sun.org.apache.xalan.internal.xsltc.runtime", "com.sun.org.apache.xalan.internal.xsltc.runtime.output", "com.sun.org.apache.xalan.internal.xsltc.trax", "com.sun.org.apache.xalan.internal.xsltc.util", "com.sun.org.apache.xerces.internal.dom", "com.sun.org.apache.xerces.internal.dom.events", "com.sun.org.apache.xerces.internal.impl", "com.sun.org.apache.xerces.internal.impl.dtd", "com.sun.org.apache.xerces.internal.impl.dtd.models", "com.sun.org.apache.xerces.internal.impl.dv", "com.sun.org.apache.xerces.internal.impl.dv.dtd", "com.sun.org.apache.xerces.internal.impl.dv.util", "com.sun.org.apache.xerces.internal.impl.dv.xs", "com.sun.org.apache.xerces.internal.impl.io", "com.sun.org.apache.xerces.internal.impl.msg", "com.sun.org.apache.xerces.internal.impl.validation", "com.sun.org.apache.xerces.internal.impl.xpath", "com.sun.org.apache.xerces.internal.impl.xpath.regex", "com.sun.org.apache.xerces.internal.impl.xs", "com.sun.org.apache.xerces.internal.impl.xs.identity", "com.sun.org.apache.xerces.internal.impl.xs.models", "com.sun.org.apache.xerces.internal.impl.xs.opti", "com.sun.org.apache.xerces.internal.impl.xs.traversers", "com.sun.org.apache.xerces.internal.impl.xs.util", "com.sun.org.apache.xerces.internal.jaxp", "com.sun.org.apache.xerces.internal.jaxp.datatype", "com.sun.org.apache.xerces.internal.jaxp.validation", "com.sun.org.apache.xerces.internal.parsers", "com.sun.org.apache.xerces.internal.util", "com.sun.org.apache.xerces.internal.utils", "com.sun.org.apache.xerces.internal.xinclude", "com.sun.org.apache.xerces.internal.xni", "com.sun.org.apache.xerces.internal.xni.grammars", "com.sun.org.apache.xerces.internal.xni.parser", "com.sun.org.apache.xerces.internal.xpointer", "com.sun.org.apache.xerces.internal.xs", "com.sun.org.apache.xerces.internal.xs.datatypes", "com.sun.org.apache.xml.internal.dtm", "com.sun.org.apache.xml.internal.dtm.ref", "com.sun.org.apache.xml.internal.dtm.ref.dom2dtm", "com.sun.org.apache.xml.internal.dtm.ref.sax2dtm", "com.sun.org.apache.xml.internal.res", "com.sun.org.apache.xml.internal.resolver", "com.sun.org.apache.xml.internal.resolver.helpers", "com.sun.org.apache.xml.internal.resolver.readers", "com.sun.org.apache.xml.internal.resolver.tools", "com.sun.org.apache.xml.internal.security", "com.sun.org.apache.xml.internal.security.algorithms", "com.sun.org.apache.xml.internal.security.algorithms.implementations", "com.sun.org.apache.xml.internal.security.c14n", "com.sun.org.apache.xml.internal.security.c14n.helper", "com.sun.org.apache.xml.internal.security.c14n.implementations", "com.sun.org.apache.xml.internal.security.encryption", "com.sun.org.apache.xml.internal.security.exceptions", "com.sun.org.apache.xml.internal.security.keys", "com.sun.org.apache.xml.internal.security.keys.content", "com.sun.org.apache.xml.internal.security.keys.content.keyvalues", "com.sun.org.apache.xml.internal.security.keys.content.x509", "com.sun.org.apache.xml.internal.security.keys.keyresolver", "com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations", "com.sun.org.apache.xml.internal.security.keys.storage", "com.sun.org.apache.xml.internal.security.keys.storage.implementations", "com.sun.org.apache.xml.internal.security.signature", "com.sun.org.apache.xml.internal.security.signature.reference", "com.sun.org.apache.xml.internal.security.transforms", "com.sun.org.apache.xml.internal.security.transforms.implementations", "com.sun.org.apache.xml.internal.security.transforms.params", "com.sun.org.apache.xml.internal.security.utils", "com.sun.org.apache.xml.internal.security.utils.resolver", "com.sun.org.apache.xml.internal.security.utils.resolver.implementations", "com.sun.org.apache.xml.internal.serialize", "com.sun.org.apache.xml.internal.serializer", "com.sun.org.apache.xml.internal.serializer.utils", "com.sun.org.apache.xml.internal.utils", "com.sun.org.apache.xml.internal.utils.res", "com.sun.org.apache.xpath.internal", "com.sun.org.apache.xpath.internal.axes", "com.sun.org.apache.xpath.internal.compiler", "com.sun.org.apache.xpath.internal.domapi", "com.sun.org.apache.xpath.internal.functions", "com.sun.org.apache.xpath.internal.jaxp", "com.sun.org.apache.xpath.internal.objects", "com.sun.org.apache.xpath.internal.operations", "com.sun.org.apache.xpath.internal.patterns", "com.sun.org.apache.xpath.internal.res", "com.sun.org.glassfish.external.amx", "com.sun.org.glassfish.external.arc", "com.sun.org.glassfish.external.probe.provider", "com.sun.org.glassfish.external.probe.provider.annotations", "com.sun.org.glassfish.external.statistics", "com.sun.org.glassfish.external.statistics.annotations", "com.sun.org.glassfish.external.statistics.impl", "com.sun.org.glassfish.gmbal", "com.sun.org.glassfish.gmbal.util", "com.sun.org.omg.CORBA", "com.sun.org.omg.CORBA.ValueDefPackage", "com.sun.org.omg.CORBA.portable", "com.sun.org.omg.SendingContext", "com.sun.org.omg.SendingContext.CodeBasePackage", "com.sun.pisces", "com.sun.prism", "com.sun.prism.d3d", "com.sun.prism.es2", "com.sun.prism.image", "com.sun.prism.impl", "com.sun.prism.impl.packrect", "com.sun.prism.impl.paint", "com.sun.prism.impl.ps", "com.sun.prism.impl.shape", "com.sun.prism.j2d", "com.sun.prism.j2d.paint", "com.sun.prism.j2d.print", "com.sun.prism.paint", "com.sun.prism.ps", "com.sun.prism.shader", "com.sun.prism.shape", "com.sun.prism.sw", "com.sun.rmi.rmid", "com.sun.rowset", "com.sun.rowset.internal", "com.sun.rowset.providers", "com.sun.scenario", "com.sun.scenario.animation", "com.sun.scenario.animation.shared", "com.sun.scenario.effect", "com.sun.scenario.effect.impl", "com.sun.scenario.effect.impl.es2", "com.sun.scenario.effect.impl.hw", "com.sun.scenario.effect.impl.hw.d3d", "com.sun.scenario.effect.impl.prism", "com.sun.scenario.effect.impl.prism.ps", "com.sun.scenario.effect.impl.prism.sw", "com.sun.scenario.effect.impl.state", "com.sun.scenario.effect.impl.sw", "com.sun.scenario.effect.impl.sw.java", "com.sun.scenario.effect.impl.sw.sse", "com.sun.scenario.effect.light", "com.sun.security.auth", "com.sun.security.auth.callback", "com.sun.security.auth.login", "com.sun.security.auth.module", "com.sun.security.cert.internal.x509", "com.sun.security.jgss", "com.sun.security.ntlm", "com.sun.security.sasl", "com.sun.security.sasl.digest", "com.sun.security.sasl.gsskerb", "com.sun.security.sasl.ntlm", "com.sun.security.sasl.util", "com.sun.source.doctree", "com.sun.source.tree", "com.sun.source.util", "com.sun.swing.internal.plaf.basic.resources", "com.sun.swing.internal.plaf.metal.resources", "com.sun.swing.internal.plaf.synth.resources", "com.sun.tools.attach", "com.sun.tools.attach.spi", "com.sun.tools.classfile", "com.sun.tools.corba.se.idl", "com.sun.tools.corba.se.idl.constExpr", "com.sun.tools.corba.se.idl.som.cff", "com.sun.tools.corba.se.idl.som.idlemit", "com.sun.tools.corba.se.idl.toJavaPortable", "com.sun.tools.doclets", "com.sun.tools.doclets.formats.html", "com.sun.tools.doclets.formats.html.markup", "com.sun.tools.doclets.formats.html.resources", "com.sun.tools.doclets.internal.toolkit", "com.sun.tools.doclets.internal.toolkit.builders", "com.sun.tools.doclets.internal.toolkit.resources", "com.sun.tools.doclets.internal.toolkit.taglets", "com.sun.tools.doclets.internal.toolkit.util", "com.sun.tools.doclets.internal.toolkit.util.links", "com.sun.tools.doclets.standard", "com.sun.tools.doclint", "com.sun.tools.doclint.resources", "com.sun.tools.example.debug.expr", "com.sun.tools.example.debug.tty", "com.sun.tools.extcheck", "com.sun.tools.hat", "com.sun.tools.hat.internal.model", "com.sun.tools.hat.internal.oql", "com.sun.tools.hat.internal.parser", "com.sun.tools.hat.internal.server", "com.sun.tools.hat.internal.util", "com.sun.tools.internal.jxc", "com.sun.tools.internal.jxc.ap", "com.sun.tools.internal.jxc.api", "com.sun.tools.internal.jxc.api.impl.j2s", "com.sun.tools.internal.jxc.gen.config", "com.sun.tools.internal.jxc.model.nav", "com.sun.tools.internal.ws", "com.sun.tools.internal.ws.api", "com.sun.tools.internal.ws.api.wsdl", "com.sun.tools.internal.ws.processor", "com.sun.tools.internal.ws.processor.generator", "com.sun.tools.internal.ws.processor.model", "com.sun.tools.internal.ws.processor.model.exporter", "com.sun.tools.internal.ws.processor.model.java", "com.sun.tools.internal.ws.processor.model.jaxb", "com.sun.tools.internal.ws.processor.modeler", "com.sun.tools.internal.ws.processor.modeler.annotation", "com.sun.tools.internal.ws.processor.modeler.wsdl", "com.sun.tools.internal.ws.processor.util", "com.sun.tools.internal.ws.resources", "com.sun.tools.internal.ws.spi", "com.sun.tools.internal.ws.util", "com.sun.tools.internal.ws.util.xml", "com.sun.tools.internal.ws.wscompile", "com.sun.tools.internal.ws.wscompile.plugin.at_generated", "com.sun.tools.internal.ws.wsdl.document", "com.sun.tools.internal.ws.wsdl.document.http", "com.sun.tools.internal.ws.wsdl.document.jaxws", "com.sun.tools.internal.ws.wsdl.document.mime", "com.sun.tools.internal.ws.wsdl.document.schema", "com.sun.tools.internal.ws.wsdl.document.soap", "com.sun.tools.internal.ws.wsdl.framework", "com.sun.tools.internal.ws.wsdl.parser", "com.sun.tools.internal.xjc", "com.sun.tools.internal.xjc.addon.accessors", "com.sun.tools.internal.xjc.addon.at_generated", "com.sun.tools.internal.xjc.addon.code_injector", "com.sun.tools.internal.xjc.addon.episode", "com.sun.tools.internal.xjc.addon.locator", "com.sun.tools.internal.xjc.addon.sync", "com.sun.tools.internal.xjc.api", "com.sun.tools.internal.xjc.api.impl.s2j", "com.sun.tools.internal.xjc.api.util", "com.sun.tools.internal.xjc.generator.annotation.spec", "com.sun.tools.internal.xjc.generator.bean", "com.sun.tools.internal.xjc.generator.bean.field", "com.sun.tools.internal.xjc.generator.util", "com.sun.tools.internal.xjc.model", "com.sun.tools.internal.xjc.model.nav", "com.sun.tools.internal.xjc.outline", "com.sun.tools.internal.xjc.reader", "com.sun.tools.internal.xjc.reader.dtd", "com.sun.tools.internal.xjc.reader.dtd.bindinfo", "com.sun.tools.internal.xjc.reader.gbind", "com.sun.tools.internal.xjc.reader.internalizer", "com.sun.tools.internal.xjc.reader.relaxng", "com.sun.tools.internal.xjc.reader.xmlschema", "com.sun.tools.internal.xjc.reader.xmlschema.bindinfo", "com.sun.tools.internal.xjc.reader.xmlschema.ct", "com.sun.tools.internal.xjc.reader.xmlschema.parser", "com.sun.tools.internal.xjc.runtime", "com.sun.tools.internal.xjc.util", "com.sun.tools.internal.xjc.writer", "com.sun.tools.javac", "com.sun.tools.javac.api", "com.sun.tools.javac.code", "com.sun.tools.javac.comp", "com.sun.tools.javac.file", "com.sun.tools.javac.jvm", "com.sun.tools.javac.main", "com.sun.tools.javac.model", "com.sun.tools.javac.nio", "com.sun.tools.javac.parser", "com.sun.tools.javac.processing", "com.sun.tools.javac.resources", "com.sun.tools.javac.sym", "com.sun.tools.javac.tree", "com.sun.tools.javac.util", "com.sun.tools.javadoc", "com.sun.tools.javadoc.api", "com.sun.tools.javadoc.resources", "com.sun.tools.javah", "com.sun.tools.javah.resources", "com.sun.tools.javap", "com.sun.tools.javap.resources", "com.sun.tools.jconsole", "com.sun.tools.jdeps", "com.sun.tools.jdeps.resources", "com.sun.tools.jdi", "com.sun.tools.jdi.resources", "com.sun.tools.script.shell", "com.sun.tracing", "com.sun.tracing.dtrace", "com.sun.webkit", "com.sun.webkit.dom", "com.sun.webkit.event", "com.sun.webkit.graphics", "com.sun.webkit.network", "com.sun.webkit.network.about", "com.sun.webkit.network.data", "com.sun.webkit.perf", "com.sun.webkit.plugin", "com.sun.webkit.text", "com.sun.xml.internal.bind", "com.sun.xml.internal.bind.annotation", "com.sun.xml.internal.bind.api", "com.sun.xml.internal.bind.api.impl", "com.sun.xml.internal.bind.marshaller", "com.sun.xml.internal.bind.unmarshaller", "com.sun.xml.internal.bind.util", "com.sun.xml.internal.bind.v2", "com.sun.xml.internal.bind.v2.bytecode", "com.sun.xml.internal.bind.v2.model.annotation", "com.sun.xml.internal.bind.v2.model.core", "com.sun.xml.internal.bind.v2.model.impl", "com.sun.xml.internal.bind.v2.model.nav", "com.sun.xml.internal.bind.v2.model.runtime", "com.sun.xml.internal.bind.v2.model.util", "com.sun.xml.internal.bind.v2.runtime", "com.sun.xml.internal.bind.v2.runtime.output", "com.sun.xml.internal.bind.v2.runtime.property", "com.sun.xml.internal.bind.v2.runtime.reflect", "com.sun.xml.internal.bind.v2.runtime.reflect.opt", "com.sun.xml.internal.bind.v2.runtime.unmarshaller", "com.sun.xml.internal.bind.v2.schemagen", "com.sun.xml.internal.bind.v2.schemagen.episode", "com.sun.xml.internal.bind.v2.schemagen.xmlschema", "com.sun.xml.internal.bind.v2.util", "com.sun.xml.internal.dtdparser", "com.sun.xml.internal.fastinfoset", "com.sun.xml.internal.fastinfoset.algorithm", "com.sun.xml.internal.fastinfoset.alphabet", "com.sun.xml.internal.fastinfoset.dom", "com.sun.xml.internal.fastinfoset.org.apache.xerces.util", "com.sun.xml.internal.fastinfoset.sax", "com.sun.xml.internal.fastinfoset.stax", "com.sun.xml.internal.fastinfoset.stax.events", "com.sun.xml.internal.fastinfoset.stax.factory", "com.sun.xml.internal.fastinfoset.stax.util", "com.sun.xml.internal.fastinfoset.tools", "com.sun.xml.internal.fastinfoset.util", "com.sun.xml.internal.fastinfoset.vocab", "com.sun.xml.internal.messaging.saaj", "com.sun.xml.internal.messaging.saaj.client.p2p", "com.sun.xml.internal.messaging.saaj.packaging.mime", "com.sun.xml.internal.messaging.saaj.packaging.mime.internet", "com.sun.xml.internal.messaging.saaj.packaging.mime.util", "com.sun.xml.internal.messaging.saaj.soap", "com.sun.xml.internal.messaging.saaj.soap.dynamic", "com.sun.xml.internal.messaging.saaj.soap.impl", "com.sun.xml.internal.messaging.saaj.soap.name", "com.sun.xml.internal.messaging.saaj.soap.ver1_1", "com.sun.xml.internal.messaging.saaj.soap.ver1_2", "com.sun.xml.internal.messaging.saaj.util", "com.sun.xml.internal.messaging.saaj.util.transform", "com.sun.xml.internal.org.jvnet.fastinfoset", "com.sun.xml.internal.org.jvnet.fastinfoset.sax", "com.sun.xml.internal.org.jvnet.fastinfoset.sax.helpers", "com.sun.xml.internal.org.jvnet.fastinfoset.stax", "com.sun.xml.internal.org.jvnet.mimepull", "com.sun.xml.internal.org.jvnet.staxex", "com.sun.xml.internal.rngom.ast.builder", "com.sun.xml.internal.rngom.ast.om", "com.sun.xml.internal.rngom.ast.util", "com.sun.xml.internal.rngom.binary", "com.sun.xml.internal.rngom.binary.visitor", "com.sun.xml.internal.rngom.digested", "com.sun.xml.internal.rngom.dt", "com.sun.xml.internal.rngom.dt.builtin", "com.sun.xml.internal.rngom.nc", "com.sun.xml.internal.rngom.parse", "com.sun.xml.internal.rngom.parse.compact", "com.sun.xml.internal.rngom.parse.host", "com.sun.xml.internal.rngom.parse.xml", "com.sun.xml.internal.rngom.util", "com.sun.xml.internal.rngom.xml.sax", "com.sun.xml.internal.rngom.xml.util", "com.sun.xml.internal.stream", "com.sun.xml.internal.stream.buffer", "com.sun.xml.internal.stream.buffer.sax", "com.sun.xml.internal.stream.buffer.stax", "com.sun.xml.internal.stream.dtd", "com.sun.xml.internal.stream.dtd.nonvalidating", "com.sun.xml.internal.stream.events", "com.sun.xml.internal.stream.util", "com.sun.xml.internal.stream.writers", "com.sun.xml.internal.txw2", "com.sun.xml.internal.txw2.annotation", "com.sun.xml.internal.txw2.output", "com.sun.xml.internal.ws", "com.sun.xml.internal.ws.addressing", "com.sun.xml.internal.ws.addressing.model", "com.sun.xml.internal.ws.addressing.policy", "com.sun.xml.internal.ws.addressing.v200408", "com.sun.xml.internal.ws.api", "com.sun.xml.internal.ws.api.addressing", "com.sun.xml.internal.ws.api.client", "com.sun.xml.internal.ws.api.config.management", "com.sun.xml.internal.ws.api.config.management.policy", "com.sun.xml.internal.ws.api.databinding", "com.sun.xml.internal.ws.api.fastinfoset", "com.sun.xml.internal.ws.api.ha", "com.sun.xml.internal.ws.api.handler", "com.sun.xml.internal.ws.api.message", "com.sun.xml.internal.ws.api.message.saaj", "com.sun.xml.internal.ws.api.message.stream", "com.sun.xml.internal.ws.api.model", "com.sun.xml.internal.ws.api.model.soap", "com.sun.xml.internal.ws.api.model.wsdl", "com.sun.xml.internal.ws.api.model.wsdl.editable", "com.sun.xml.internal.ws.api.pipe", "com.sun.xml.internal.ws.api.pipe.helper", "com.sun.xml.internal.ws.api.policy", "com.sun.xml.internal.ws.api.policy.subject", "com.sun.xml.internal.ws.api.server", "com.sun.xml.internal.ws.api.streaming", "com.sun.xml.internal.ws.api.wsdl.parser", "com.sun.xml.internal.ws.api.wsdl.writer", "com.sun.xml.internal.ws.assembler", "com.sun.xml.internal.ws.assembler.dev", "com.sun.xml.internal.ws.assembler.jaxws", "com.sun.xml.internal.ws.binding", "com.sun.xml.internal.ws.client", "com.sun.xml.internal.ws.client.dispatch", "com.sun.xml.internal.ws.client.sei", "com.sun.xml.internal.ws.commons.xmlutil", "com.sun.xml.internal.ws.config.management.policy", "com.sun.xml.internal.ws.config.metro.dev", "com.sun.xml.internal.ws.config.metro.util", "com.sun.xml.internal.ws.db", "com.sun.xml.internal.ws.db.glassfish", "com.sun.xml.internal.ws.developer", "com.sun.xml.internal.ws.dump", "com.sun.xml.internal.ws.encoding", "com.sun.xml.internal.ws.encoding.fastinfoset", "com.sun.xml.internal.ws.encoding.policy", "com.sun.xml.internal.ws.encoding.soap", "com.sun.xml.internal.ws.encoding.soap.streaming", "com.sun.xml.internal.ws.encoding.xml", "com.sun.xml.internal.ws.fault", "com.sun.xml.internal.ws.handler", "com.sun.xml.internal.ws.message", "com.sun.xml.internal.ws.message.jaxb", "com.sun.xml.internal.ws.message.saaj", "com.sun.xml.internal.ws.message.source", "com.sun.xml.internal.ws.message.stream", "com.sun.xml.internal.ws.model", "com.sun.xml.internal.ws.model.soap", "com.sun.xml.internal.ws.model.wsdl", "com.sun.xml.internal.ws.org.objectweb.asm", "com.sun.xml.internal.ws.policy", "com.sun.xml.internal.ws.policy.jaxws", "com.sun.xml.internal.ws.policy.jaxws.spi", "com.sun.xml.internal.ws.policy.privateutil", "com.sun.xml.internal.ws.policy.sourcemodel", "com.sun.xml.internal.ws.policy.sourcemodel.attach", "com.sun.xml.internal.ws.policy.sourcemodel.wspolicy", "com.sun.xml.internal.ws.policy.spi", "com.sun.xml.internal.ws.policy.subject", "com.sun.xml.internal.ws.protocol.soap", "com.sun.xml.internal.ws.protocol.xml", "com.sun.xml.internal.ws.resources", "com.sun.xml.internal.ws.runtime.config", "com.sun.xml.internal.ws.server", "com.sun.xml.internal.ws.server.provider", "com.sun.xml.internal.ws.server.sei", "com.sun.xml.internal.ws.spi", "com.sun.xml.internal.ws.spi.db", "com.sun.xml.internal.ws.streaming", "com.sun.xml.internal.ws.transport", "com.sun.xml.internal.ws.transport.http", "com.sun.xml.internal.ws.transport.http.client", "com.sun.xml.internal.ws.transport.http.server", "com.sun.xml.internal.ws.util", "com.sun.xml.internal.ws.util.exception", "com.sun.xml.internal.ws.util.pipe", "com.sun.xml.internal.ws.util.xml", "com.sun.xml.internal.ws.wsdl", "com.sun.xml.internal.ws.wsdl.parser", "com.sun.xml.internal.ws.wsdl.writer", "com.sun.xml.internal.ws.wsdl.writer.document", "com.sun.xml.internal.ws.wsdl.writer.document.http", "com.sun.xml.internal.ws.wsdl.writer.document.soap", "com.sun.xml.internal.ws.wsdl.writer.document.soap12", "com.sun.xml.internal.ws.wsdl.writer.document.xsd", "com.sun.xml.internal.xsom", "com.sun.xml.internal.xsom.impl", "com.sun.xml.internal.xsom.impl.parser", "com.sun.xml.internal.xsom.impl.parser.state", "com.sun.xml.internal.xsom.impl.scd", "com.sun.xml.internal.xsom.impl.util", "com.sun.xml.internal.xsom.parser", "com.sun.xml.internal.xsom.util", "com.sun.xml.internal.xsom.visitor", "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", "java.io", "java.lang", "java.lang.annotation", "java.lang.instrument", "java.lang.invoke", "java.lang.management", "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.rmi", "java.rmi.activation", "java.rmi.dgc", "java.rmi.registry", "java.rmi.server", "java.security", "java.security.acl", "java.security.cert", "java.security.interfaces", "java.security.spec", "java.sql", "java.text", "java.text.spi", "java.time", "java.time.chrono", "java.time.format", "java.time.temporal", "java.time.zone", "java.util", "java.util.concurrent", "java.util.concurrent.atomic", "java.util.concurrent.locks", "java.util.function", "java.util.jar", "java.util.logging", "java.util.prefs", "java.util.regex", "java.util.spi", "java.util.stream", "java.util.zip", "javafx.animation", "javafx.application", "javafx.beans", "javafx.beans.binding", "javafx.beans.property", "javafx.beans.property.adapter", "javafx.beans.value", "javafx.collections", "javafx.collections.transformation", "javafx.concurrent", "javafx.css", "javafx.embed.swing", "javafx.embed.swt", "javafx.event", "javafx.fxml", "javafx.geometry", "javafx.print", "javafx.scene", "javafx.scene.canvas", "javafx.scene.chart", "javafx.scene.control", "javafx.scene.control.cell", "javafx.scene.effect", "javafx.scene.image", "javafx.scene.input", "javafx.scene.layout", "javafx.scene.media", "javafx.scene.paint", "javafx.scene.shape", "javafx.scene.text", "javafx.scene.transform", "javafx.scene.web", "javafx.stage", "javafx.util", "javafx.util.converter", "javax.accessibility", "javax.activation", "javax.activity", "javax.annotation", "javax.annotation.processing", "javax.crypto", "javax.crypto.interfaces", "javax.crypto.spec", "javax.imageio", "javax.imageio.event", "javax.imageio.metadata", "javax.imageio.plugins.bmp", "javax.imageio.plugins.jpeg", "javax.imageio.spi", "javax.imageio.stream", "javax.jws", "javax.jws.soap", "javax.lang.model", "javax.lang.model.element", "javax.lang.model.type", "javax.lang.model.util", "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.net", "javax.net.ssl", "javax.print", "javax.print.attribute", "javax.print.attribute.standard", "javax.print.event", "javax.rmi", "javax.rmi.CORBA", "javax.rmi.ssl", "javax.script", "javax.security.auth", "javax.security.auth.callback", "javax.security.auth.kerberos", "javax.security.auth.login", "javax.security.auth.spi", "javax.security.auth.x500", "javax.security.cert", "javax.security.sasl", "javax.smartcardio", "javax.sound.midi", "javax.sound.midi.spi", "javax.sound.sampled", "javax.sound.sampled.spi", "javax.sql", "javax.sql.rowset", "javax.sql.rowset.serial", "javax.sql.rowset.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.tools", "javax.transaction", "javax.transaction.xa", "javax.xml", "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.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.xml.datatype", "javax.xml.namespace", "javax.xml.parsers", "javax.xml.soap", "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.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.xml.xpath", "jdk", "jdk.internal.cmm", "jdk.internal.dynalink", "jdk.internal.dynalink.beans", "jdk.internal.dynalink.linker", "jdk.internal.dynalink.support", "jdk.internal.instrumentation", "jdk.internal.org.objectweb.asm", "jdk.internal.org.objectweb.asm.commons", "jdk.internal.org.objectweb.asm.signature", "jdk.internal.org.objectweb.asm.tree", "jdk.internal.org.objectweb.asm.tree.analysis", "jdk.internal.org.objectweb.asm.util", "jdk.internal.org.xml.sax", "jdk.internal.org.xml.sax.helpers", "jdk.internal.util.xml", "jdk.internal.util.xml.impl", "jdk.jfr.events", "jdk.management.cmm", "jdk.management.resource", "jdk.management.resource.internal", "jdk.management.resource.internal.inst", "jdk.nashorn.api.scripting", "jdk.nashorn.internal", "jdk.nashorn.internal.codegen", "jdk.nashorn.internal.codegen.types", "jdk.nashorn.internal.ir", "jdk.nashorn.internal.ir.annotations", "jdk.nashorn.internal.ir.debug", "jdk.nashorn.internal.ir.visitor", "jdk.nashorn.internal.lookup", "jdk.nashorn.internal.objects", "jdk.nashorn.internal.objects.annotations", "jdk.nashorn.internal.parser", "jdk.nashorn.internal.runtime", "jdk.nashorn.internal.runtime.arrays", "jdk.nashorn.internal.runtime.events", "jdk.nashorn.internal.runtime.linker", "jdk.nashorn.internal.runtime.logging", "jdk.nashorn.internal.runtime.options", "jdk.nashorn.internal.runtime.regexp", "jdk.nashorn.internal.runtime.regexp.joni", "jdk.nashorn.internal.runtime.regexp.joni.ast", "jdk.nashorn.internal.runtime.regexp.joni.constants", "jdk.nashorn.internal.runtime.regexp.joni.encoding", "jdk.nashorn.internal.runtime.regexp.joni.exception", "jdk.nashorn.internal.scripts", "jdk.nashorn.tools", "jdk.net", "netscape.javascript", "oracle.jrockit.jfr", "oracle.jrockit.jfr.events", "oracle.jrockit.jfr.jdkevents", "oracle.jrockit.jfr.jdkevents.throwabletransform", "oracle.jrockit.jfr.openmbean", "oracle.jrockit.jfr.parser", "oracle.jrockit.jfr.settings", "oracle.jrockit.jfr.tools", "org.ietf.jgss", "org.jcp.xml.dsig.internal", "org.jcp.xml.dsig.internal.dom", "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", "org.relaxng.datatype", "org.relaxng.datatype.helpers", "org.w3c.dom", "org.w3c.dom.bootstrap", "org.w3c.dom.css", "org.w3c.dom.events", "org.w3c.dom.html", "org.w3c.dom.ls", "org.w3c.dom.ranges", "org.w3c.dom.stylesheets", "org.w3c.dom.traversal", "org.w3c.dom.views", "org.w3c.dom.xpath", "org.xml.sax", "org.xml.sax.ext", "org.xml.sax.helpers", "sun.applet", "sun.applet.resources", "sun.audio", "sun.awt", "sun.awt.X11", "sun.awt.datatransfer", "sun.awt.dnd", "sun.awt.event", "sun.awt.geom", "sun.awt.im", "sun.awt.image", "sun.awt.image.codec", "sun.awt.motif", "sun.awt.resources", "sun.awt.shell", "sun.awt.util", "sun.awt.windows", "sun.corba", "sun.dc", "sun.dc.path", "sun.dc.pr", "sun.font", "sun.instrument", "sun.invoke", "sun.invoke.empty", "sun.invoke.util", "sun.io", "sun.java2d", "sun.java2d.cmm", "sun.java2d.cmm.kcms", "sun.java2d.cmm.lcms", "sun.java2d.d3d", "sun.java2d.jules", "sun.java2d.loops", "sun.java2d.opengl", "sun.java2d.pipe", "sun.java2d.pipe.hw", "sun.java2d.pisces", "sun.java2d.windows", "sun.java2d.x11", "sun.java2d.xr", "sun.jvmstat.monitor", "sun.jvmstat.monitor.event", "sun.jvmstat.monitor.remote", "sun.jvmstat.perfdata.monitor", "sun.jvmstat.perfdata.monitor.protocol.file", "sun.jvmstat.perfdata.monitor.protocol.local", "sun.jvmstat.perfdata.monitor.protocol.rmi", "sun.jvmstat.perfdata.monitor.v1_0", "sun.jvmstat.perfdata.monitor.v2_0", "sun.launcher", "sun.launcher.resources", "sun.lwawt", "sun.lwawt.macosx", "sun.management", "sun.management.counter", "sun.management.counter.perf", "sun.management.jdp", "sun.management.jmxremote", "sun.management.resources", "sun.management.snmp", "sun.management.snmp.jvminstr", "sun.management.snmp.jvmmib", "sun.management.snmp.util", "sun.misc", "sun.misc.resources", "sun.net", "sun.net.dns", "sun.net.ftp", "sun.net.ftp.impl", "sun.net.httpserver", "sun.net.idn", "sun.net.sdp", "sun.net.smtp", "sun.net.spi", "sun.net.spi.nameservice", "sun.net.spi.nameservice.dns", "sun.net.util", "sun.net.www", "sun.net.www.content.audio", "sun.net.www.content.image", "sun.net.www.content.text", "sun.net.www.http", "sun.net.www.protocol.file", "sun.net.www.protocol.ftp", "sun.net.www.protocol.http", "sun.net.www.protocol.http.logging", "sun.net.www.protocol.http.ntlm", "sun.net.www.protocol.http.spnego", "sun.net.www.protocol.https", "sun.net.www.protocol.jar", "sun.net.www.protocol.mailto", "sun.net.www.protocol.netdoc", "sun.nio", "sun.nio.ch", "sun.nio.ch.sctp", "sun.nio.cs", "sun.nio.cs.ext", "sun.nio.fs", "sun.print", "sun.print.resources", "sun.reflect", "sun.reflect.annotation", "sun.reflect.generics.factory", "sun.reflect.generics.parser", "sun.reflect.generics.reflectiveObjects", "sun.reflect.generics.repository", "sun.reflect.generics.scope", "sun.reflect.generics.tree", "sun.reflect.generics.visitor", "sun.reflect.misc", "sun.rmi.log", "sun.rmi.registry", "sun.rmi.rmic", "sun.rmi.rmic.iiop", "sun.rmi.rmic.newrmic", "sun.rmi.rmic.newrmic.jrmp", "sun.rmi.runtime", "sun.rmi.server", "sun.rmi.transport", "sun.rmi.transport.proxy", "sun.rmi.transport.tcp", "sun.security.acl", "sun.security.action", "sun.security.ec", "sun.security.internal.interfaces", "sun.security.internal.spec", "sun.security.jca", "sun.security.jgss", "sun.security.jgss.krb5", "sun.security.jgss.spi", "sun.security.jgss.spnego", "sun.security.jgss.wrapper", "sun.security.krb5", "sun.security.krb5.internal", "sun.security.krb5.internal.ccache", "sun.security.krb5.internal.crypto", "sun.security.krb5.internal.crypto.dk", "sun.security.krb5.internal.ktab", "sun.security.krb5.internal.rcache", "sun.security.krb5.internal.tools", "sun.security.krb5.internal.util", "sun.security.mscapi", "sun.security.pkcs", "sun.security.pkcs10", "sun.security.pkcs11", "sun.security.pkcs11.wrapper", "sun.security.pkcs12", "sun.security.provider", "sun.security.provider.certpath", "sun.security.provider.certpath.ldap", "sun.security.provider.certpath.ssl", "sun.security.rsa", "sun.security.smartcardio", "sun.security.ssl", "sun.security.ssl.krb5", "sun.security.timestamp", "sun.security.tools", "sun.security.tools.jarsigner", "sun.security.tools.keytool", "sun.security.tools.policytool", "sun.security.util", "sun.security.validator", "sun.security.x509", "sun.swing", "sun.swing.icon", "sun.swing.plaf", "sun.swing.plaf.synth", "sun.swing.plaf.windows", "sun.swing.table", "sun.swing.text", "sun.swing.text.html", "sun.text", "sun.text.bidi", "sun.text.normalizer", "sun.text.resources", "sun.text.resources.en", "sun.tools.asm", "sun.tools.attach", "sun.tools.jar", "sun.tools.jar.resources", "sun.tools.java", "sun.tools.javac", "sun.tools.jcmd", "sun.tools.jconsole", "sun.tools.jconsole.inspector", "sun.tools.jinfo", "sun.tools.jmap", "sun.tools.jps", "sun.tools.jstack", "sun.tools.jstat", "sun.tools.jstatd", "sun.tools.native2ascii", "sun.tools.native2ascii.resources", "sun.tools.serialver", "sun.tools.tree", "sun.tools.util", "sun.tracing", "sun.tracing.dtrace", "sun.usagetracker", "sun.util", "sun.util.calendar", "sun.util.cldr", "sun.util.locale", "sun.util.locale.provider", "sun.util.logging", "sun.util.logging.resources", "sun.util.resources", "sun.util.resources.en", "sun.util.spi", "sun.util.xml" }; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy