1

I am currently updating one of my Java projects from JDK 1.5.0_14 to JDK 8u202.

Here is my problem:

  • I can build the project with JDK 1.5.0_14 and JDK 8u202.

  • But as soon as I change one single line of code (no matter what) I get the following java.lang.AssertionError (see at the end of this post).

  • When I downgrade to JDK 1.5.0_14, build the project once and upgrade to JDK 8u202, I can build again without any error.

  • But again, after changing any line of code (only one character), I get the error below.

Does anybody have an idea how to resolve this issue?

FYI: I am using NetBeans 8.0.2.

ant -f D:\\NetBeansProjects\\MyProject -Dnb.internal.action.name=build jar
init:
Deleting: D:\NetBeansProjects\MyProject\build\built-jar.properties
deps-jar:
Updating property file: D:\NetBeansProjects\MyProject\build\built-jar.properties
Compiling 1 source file to D:\NetBeansProjects\MyProject\build\classes
An exception has occurred in the compiler (1.8.0_202). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: the -J flag should be caught by the launcher.
    at com.sun.tools.javac.main.Option$20.process(Option.java:331)
    at com.sun.tools.javac.main.Main.processArgs(Main.java:260)
    at com.sun.tools.javac.main.Main.compile(Main.java:414)
    at com.sun.tools.javac.main.Main.compile(Main.java:381)
    at com.sun.tools.javac.main.Main.compile(Main.java:370)
    at com.sun.tools.javac.main.Main.compile(Main.java:361)
    at com.sun.tools.javac.Main.compile(Main.java:56)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56)
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1159)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:935)
    at org.netbeans.modules.java.source.ant.JavacTask.execute(JavacTask.java:145)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
    at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:286)
    at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:555)
    at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153)
D:\NetBeansProjects\MyProject\nbproject\build-impl.xml:910: The following error occurred while executing this line:
D:\NetBeansProjects\MyProject\nbproject\build-impl.xml:300: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 0 seconds)

Here is the compilation and JAR building section from my build-impl.xml

    <!--
            ===================
            COMPILATION SECTION
            ===================
        -->
<target name="-deps-jar-init" unless="built-jar.properties">
    <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
    <delete file="${built-jar.properties}" quiet="true"/>
</target>
<target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
    <echo level="warn" message="Cycle detected: MyProject was already built"/>
</target>
<target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
    <mkdir dir="${build.dir}"/>
    <touch file="${built-jar.properties}" verbose="false"/>
    <property file="${built-jar.properties}" prefix="already.built.jar."/>
    <antcall target="-warn-already-built-jar"/>
    <propertyfile file="${built-jar.properties}">
        <entry key="${basedir}" value=""/>
    </propertyfile>
</target>
<target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
<target depends="init" name="-check-automatic-build">
    <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
</target>
<target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
    <antcall target="clean"/>
</target>
<target depends="init,deps-jar" name="-pre-pre-compile">
    <mkdir dir="${build.classes.dir}"/>
</target>
<target name="-pre-compile">
    <!-- Empty placeholder for easier customization. -->
    <!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-depend">
    <pathconvert property="build.generated.subdirs">
        <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
            <include name="*"/>
        </dirset>
    </pathconvert>
    <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
    <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
    <copy todir="${build.classes.dir}">
        <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
    </copy>
</target>
<target if="has.persistence.xml" name="-copy-persistence-xml">
    <mkdir dir="${build.classes.dir}/META-INF"/>
    <copy todir="${build.classes.dir}/META-INF">
        <fileset dir="${meta.inf.dir}" includes="persistence.xml orm.xml"/>
    </copy>
</target>
<target name="-post-compile">
    <!-- Empty placeholder for easier customization. -->
    <!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
<target name="-pre-compile-single">
    <!-- Empty placeholder for easier customization. -->
    <!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
    <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
    <j2seproject3:force-recompile/>
    <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
</target>
<target name="-post-compile-single">
    <!-- Empty placeholder for easier customization. -->
    <!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
<!--
            ====================
            JAR BUILDING SECTION
            ====================
        -->
<target depends="init" name="-pre-pre-jar">
    <dirname file="${dist.jar}" property="dist.jar.dir"/>
    <mkdir dir="${dist.jar.dir}"/>
</target>
<target name="-pre-jar">
    <!-- Empty placeholder for easier customization. -->
    <!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init" if="do.archive" name="-do-jar-create-manifest" unless="manifest.available">
    <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
    <touch file="${tmp.manifest.file}" verbose="false"/>
</target>
<target depends="init" if="do.archive+manifest.available" name="-do-jar-copy-manifest">
    <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
    <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
</target>
<target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
    <manifest file="${tmp.manifest.file}" mode="update">
        <attribute name="Main-Class" value="${main.class}"/>
    </manifest>
</target>
<target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+profile.available" name="-do-jar-set-profile">
    <manifest file="${tmp.manifest.file}" mode="update">
        <attribute name="Profile" value="${javac.profile}"/>
    </manifest>
</target>
<target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-set-splashscreen">
    <basename file="${application.splash}" property="splashscreen.basename"/>
    <mkdir dir="${build.classes.dir}/META-INF"/>
    <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
    <manifest file="${tmp.manifest.file}" mode="update">
        <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
    </manifest>
</target>
<target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.mkdist" name="-do-jar-copylibs">
    <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
    <echo level="info">To run this application from the command line without Ant, try:</echo>
    <property location="${dist.jar}" name="dist.jar.resolved"/>
    <echo level="info">${platform.java} -jar "${dist.jar.resolved}"</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
    <j2seproject1:jar manifest="${tmp.manifest.file}"/>
    <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
    <property location="${dist.jar}" name="dist.jar.resolved"/>
    <pathconvert property="run.classpath.with.dist.jar">
        <path path="${run.classpath}"/>
        <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
    </pathconvert>
    <condition else="" property="jar.usage.message" value="To run this application from the command line without Ant, try:${line.separator}${platform.java} -cp ${run.classpath.with.dist.jar} ${main.class}">
        <isset property="main.class.available"/>
    </condition>
    <condition else="debug" property="jar.usage.level" value="info">
        <isset property="main.class.available"/>
    </condition>
    <echo level="${jar.usage.level}" message="${jar.usage.message}"/>
</target>
<target depends="-do-jar-copylibs" if="do.archive" name="-do-jar-delete-manifest">
    <delete>
        <fileset file="${tmp.manifest.file}"/>
    </delete>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-jar,-do-jar-delete-manifest" name="-do-jar-without-libraries"/>
<target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-copylibs,-do-jar-delete-manifest" name="-do-jar-with-libraries"/>
<target name="-post-jar">
    <!-- Empty placeholder for easier customization. -->
    <!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-jar,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar" name="-do-jar"/>
<target depends="init,compile,-pre-jar,-do-jar,-post-jar" description="Build JAR." name="jar"/>
Malawirel
  • 115
  • 6
  • 16
  • What's in `built-jar.properties` and `build-impl.xml` (specifically around lines 910 and 300)? Sounds like your ant file is using older VM options. – Mike Jan 30 '19 at 15:46
  • It only contains the following: "#Wed, 30 Jan 2019 16:49:47 +0100 D\:\\NetBeansProjects\\MyProject=" – Malawirel Jan 30 '19 at 15:50
  • And whats in your ant file? – Mike Jan 30 '19 at 16:04
  • I pasted the complication and JAR building section of my build-impl.xml into the post. If the full file is needed for you, I can provide it later via DropBox or Pastebin (it's blocked in the office here). – Malawirel Jan 30 '19 at 16:23

2 Answers2

0

Hello Malawirel I don't know if it helps but if you have a ant project, the problem can be on the properties file of the ant project. If you have it please check it to see if the versions are correct and all is fine.

0

I finally managed to compile it. Here is what I did:

  1. I changed the Source/Binary Format to JDK 8. See Using NetBeans 8 but getting below compilation error for Lambda expression on how to do that. I still could not compile it (in NetBeans 8.0.2).

  2. I installed NetBeans IDE 10.0 and opened the project there. Then it compiled without any issues.

So seems like this was an issue in NetBeans.

Malawirel
  • 115
  • 6
  • 16