Hi,

There's a bug in NetBeans 9 and 10 that I think deserves some attention:
https://issues.apache.org/jira/browse/NETBEANS-531

Between 8.2 and 9, the Maven project plugin changed such that the
compilation classpath now includes the current project's own compiled
classes.

With the "SuperOnePassCompileWorker" strategy used when compiling small
numbers of files, this doesn't seem to cause any problems, but with
the "OnePassCompileWorker"
strategy used when compiling 500+ files, the inclusion of previous
compilations on the classpath can pollute the resulting class files with
bogus members.

The usual symptom is a "Duplicate method name" ClassFormatError, from a
lambda or other synthetic method, but I've also seen "Absent Code
attribute" from a code-less static initializer method (unclear where it
came from; the class in question is typically an interface that doesn't
have any static initializers)

So whenever 500 or more files are compiled, usually because of a pom.xml
change, the target/classes/ directory is effectively corrupted and the
project needs a manual Maven clean+rebuild.

This is the main issue that keeps us stuck with NetBeans 8.2. I'd try to
make a fix, but this is one of those bugs that involves an interaction
between several far-flung components (maven project plugin,
java.source.nbjavac OnePassCompileWorker, nb-javac, possibly
java.source.base CacheClassPath), and I really don't know enough about the
architecture of compilation to even say which one is at fault. Anyone know
what the proper approach to fixing this would be?

Thanks,
Jeffrey

Reply via email to