<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Distribution License v. 1.0, which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: BSD-3-Clause

-->

<!DOCTYPE book [
<!ENTITY % ents SYSTEM "docbook.ent">
%ents;
]>
<section version="5.0" xml:id="deployment-runtime-errors" xml:lang="en"
         xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:ns5="http://www.w3.org/1999/xhtml"
         xmlns:ns3="http://www.w3.org/2000/svg"
         xmlns:ns="http://docbook.org/ns/docbook"
         xmlns:m="http://www.w3.org/1998/Math/MathML">
    <title>Runtime Errors</title>

    <section xml:id="Illegal_class_modifiers_for_package_info__0x1600">
        <title>Illegal class modifiers for package-info: 0x1600</title>

        <para>When you compile your sources files with JDK from Java6 and try
        to run it on Java5 JVMs, you may see a <literal>ClassFormatError</literal>
        at runtime like this:</para>

        <informalexample>
            <programlisting language=""><![CDATA[main" java.lang.ClassFormatError: Illegal class modifiers in class
com/alu/parentalcontrol/jaxb/package-info: 0x1600
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at java.lang.Package.getPackageInfo(Package.java:350)
at java.lang.Package.getAnnotation(Package.java:361)
at com.sun.xml.bind.v2.model.annotation.RuntimeInlineAnnotationReader.getPackageAnnotation(RuntimeInlineAnnotationReader.java:125)
at com.sun.xml.bind.v2.model.annotation.RuntimeInlineAnnotationReader.getPackageAnnotation(RuntimeInlineAnnotationReader.java:53)
at com.sun.xml.bind.v2.model.impl.TypeInfoImpl.parseElementName(TypeInfoImpl.java:122)
at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.<init>(ClassInfoImpl.java:166)]]></programlisting>
        </informalexample>

        <para>This is due to a bug, and so far the only way to fix this is to
        compile your project with JavaSE 5.</para>

        <para>Here is what's happening. Java5 added a new class file modifier
        attribute called <literal>ACC_SYNTHETIC</literal>, whose bit value is
        0x1000. This attribute marks types and methods that are not present in
        the source file but generated by the compiler. When
        <filename>package-info.java</filename> is compiled into
        <filename>package-info.class</filename>, javac in Java5 apparently only put
        0x0600 (= <code>ACC_ABSTRACT|ACC_INTERFACE</code>.) Some time during
        Java6 development, someone filed <link
        xlink:href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6232928">a
        bug, saying it should also include <literal>ACC_SYNTHETIC</literal>
        bit</link>, since it was a synthesized class.</para>

        <para>Later <link
        xlink:href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6313196">it
        is discovered that the corresponding VM change needs to be made to
        allow this 0x1600 combination</link>, but apparently no one realized
        the real implication of this --- namely, 0x1600 will break all the
        past JVMs. Of course, this problem is <link
        xlink:href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6553734">eventually
        discovered</link>, but as of this writing there's still no fix for
        this.</para>

        <para>So as you see, this is why the only workaround is to use javac
        from Java5.</para>
    </section>
</section>
