(original) (raw)

On 14/02/13 19:20, Boaz Nahum wrote:
Thanks - It helps a lot.

I was managed to locate the java file that cause the problem and by elimination the line.

The exception was caused by missing dependency.

The line is:

        PostProcessor.registerRequiredReferences(ResultsSaver.getResultsSaverServiceImpl(),
                                                 ScanStatisticsCollectorHelper.getStatisticsCollectorServiceImpl(),
                                                 SynchWithScanHelper.getProcessingControlServiceImpl());

The problem:

ScanStatisticsCollectorHelper implements DefectsProcessor

I'm compiling unit (Jar) C.
ScanStatisticsCollectorHelper is compiled in unit B
DefectsProcessor is in unit A.

When compiling C, A is not in classpath. And this what caused the exception. After adding A compilation succeeded.


Also we have exception from the exact same reason:

    \[javac\]     at com.sun.tools.javac.code.Types.rank(Types.java:3043)
    \[javac\]     at com.sun.tools.javac.code.Types.rank(Types.java:3015)
    \[javac\]     at com.sun.tools.javac.code.Types.rank(Types.java:3019)
    \[javac\]     at com.sun.tools.javac.code.Types.rank(Types.java:3019)
    \[javac\]     at com.sun.tools.javac.code.Symbol$TypeSymbol.precedes(Symbol.java:591)


We have many issues like this in JDK 8\. C->B->A. In JDK 7 we just add B to C classpath and it was compiled successfully. In JDK 8 we have 3 different results:

1\. A message  that A cant be found
2\. Exception: at com.sun.tools.javac.code.Types.rank(Types.java:3043)
3\. Exception: at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitApply(Flow.java:1196)
I think that can be caused by the fact that the JDK 8 compiler needs to look at more superinterfaces than the JDK 7 compiler did - which might result in JDK 8's javac being more sensitive at missing/broken stuff.

Maurizio

Thank you for your help.
Boaz





On Thu, Feb 14, 2013 at 7:56 PM, Maurizio Cimadamore <maurizio.cimadamore@oracle.com> wrote:
Add

\-XDverboseCompilePolicy

That should print detailed info about what the compiler is doing (i.e. which file it's compiling before the crash).

Maurizio




On 14/02/13 17:43, Boaz Nahum wrote:
Hi.

I'm building lambda/lambda on daily basis.

When compiling I get this compiler error, I'm compiling old stuff with no JDK 8 features:

    \[javac\] \[loading ZipFileIndexFileObject\[F:\\views2\\BoazMainWF\_JDK8\_p2\\Qsnap\\Qrelease\\Jar\\Core.jar(wf/core/base/GetterSetter.class)\]\]
    \[javac\] An exception has occurred in the compiler (1.8.0-internal). Please file a bug at the Java Developer Connection (http://java.sun.
com/webapps/bugreport)  after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report.  Tha
nk you.
    \[javac\] java.lang.NullPointerException
    \[javac\]     at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitApply(Flow.java:1196)
    \[javac\]     at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1440)
    \[javac\]     at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    \[javac\]     at com.sun.tools.javac.tree.TreeScanner.visitExec(TreeScanner.java:174)
    \[javac\]     at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1271)
    \[javac\]     at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    \[javac\]     at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
    \[javac\]     at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitBlock(Flow.java:959)
    \[javac\]     at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:884)
    \[javac\]     at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    \[javac\]     at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitMethodDef(Flow.java:926)
    \[javac\]     at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:771)
    \[javac\]     at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    \[javac\]     at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitClassDef(Flow.java:889)
    \[javac\]     at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:686)
    \[javac\]     at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    \[javac\]     at com.sun.tools.javac.comp.Flow$FlowAnalyzer.analyzeTree(Flow.java:1276)
    \[javac\]     at com.sun.tools.javac.comp.Flow$FlowAnalyzer.analyzeTree(Flow.java:1266)
    \[javac\]     at com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:212)
    \[javac\]     at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1328)
    \[javac\]     at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1302)
    \[javac\]     at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:907)
    \[javac\]     at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:866)
    \[javac\]     at com.sun.tools.javac.main.Main.compile(Main.java:505)
    \[javac\]     at com.sun.tools.javac.main.Main.compile(Main.java:365)
    \[javac\]     at com.sun.tools.javac.main.Main.compile(Main.java:354)
    \[javac\]     at com.sun.tools.javac.main.Main.compile(Main.java:345)
    \[javac\]     at com.sun.tools.javac.Main.compile(Main.java:76)
    \[javac\]     at com.sun.tools.javac.Main.main(Main.java:61)


Because I'm compiling large number of files, I have no way to know which one causes the problem.
I added -verbose But it didn't help match (maybe if I send the output it to you ?)
Is there any thing I can do to get more information ?

Thanks
Boaz