Hi Tulach,

Hello to you too. Indeed quite a long time. We're still going strong with
the use of the NetBeans RCP in our software.

I totally agree that somewhen in the future nb-javac should converge with
javac (or vice versa), but until then I hope we can fix nb-javac.

I do hope the sample project helps in finding the problem with nb-javac. At
first I thought it was a generic problem to do with duplicate class(es) in
separate modules, used by other modules. But it turned out, at least in my
case (I don't know if this is the same problem as reported by Javier
in NETBEANS-4931) it was actually due to the particular StringUtils class
that we were using that has some convenience lookup tables for Integer to
String conversion. But still it's puzzling as to why nb-javac has a problem
with this. In any case I'm glad we're able to reproduce it and that
hopefully a fix can be found.

Should I create a separate JIRA issue for this, or attach the sample
project to NETBEANS-4931?

Greets,
    Humphrey.

On Tue, Jan 5, 2021 at 10:22 AM Jaroslav Tulach <[email protected]>
wrote:

> Long time no see Humphrey!
>
> Thanks a lot for your simplified test case. It makes sense to record it
> into JIRA for tracking purposes.
>
> I talked about your problem with Jan Lahoda and we believe that the best
> way to fix the problem is to eliminate differences between Javac and
> NbJavac as discussed in
>
> https://lists.apache.org/thread.html/r5f210c99b0926aeaac2d0c3c419ff4b79e01f15b67c5ddcf32a51bbe%40%3Cdev.netbeans.apache.org%3E
> that however is going to take about a year.
>
> Reporting JIRA issue may possibly speed resolution of the problem by other
> means[1] without waiting for implementation of the "big idea".
> -jt
>
> [1] by fixing the bug in current nb-javac.
>
> Ășt 22. 12. 2020 v 9:16 odesĂ­latel Humphrey Clerx <[email protected]>
> napsal:
>
> > I've been able to narrow the problem down and have an example module
> suite
> > that shows the problem.
> >
> > It turned out it has nothing to do with duplicate classes being defined
> in
> > different modules and both being visible in other modules. The problem is
> > with the one file StringUtils in one module.
> >
> > When opening the suite and the modules the "error badges" appear. The
> > "error badges" also appear in the Unit Test package in the same module.
> >
> > This problem happens with any NetBeans 12.x when using nb-javac.
> >
> > The problem itself seems to be caused by the String lookup arrays
> > OCTAL_NUMBERS and NUMBERS. If you remove these and refactor the code to
> use
> > Integer.toString(val), the "error badges" disappear.
> >
> > When deactivating and removing nb-javac, so that the JDK_1.8 javac is
> > used, the "error badges" also don't appear (even with the lookup arrays).
> >
> > It seems nb-javac has a problem parsing/caching/... the class
> StringUtils,
> > such that it's no longer visible in other modules. It's cumbersome to
> > knwo why this is happening, since nb-javac gived no logging output, other
> > than several NPE's in the messages.log and the INFO log entries.
> >
> > INFO [org.netbeans.api.java.source.ElementHandle]: Resolved type is null
> > for kind = CLASS
> > INFO [org.netbeans.api.java.source.ElementHandle]: Cannot resolve:
> > ElementHandle[kind=CLASS;
> > sigs=org.nato.unclassified.mice.common.util.StringUtils ]
> > INFO [org.netbeans.modules.java.editor.imports.ComputeImports]: Cannot
> > resolve type element "ElementHandle[kind=CLASS;
> > sigs=org.nato.unclassified.mice.common.util.StringUtils ]".
> >
> >
> > Maybe someone can shed some light on why this is and possibly fix it for
> > NB 12.3?
> >
> > Greets,
> >     Humphrey.
> >
> >
> > On Fri, Dec 18, 2020 at 3:11 PM Humphrey Clerx <[email protected]> wrote:
> >
> >> I checked the messages.log of NetBeans 12.2 and found the following kind
> >> of entries:
> >>
> >> INFO [org.netbeans.api.java.source.ElementHandle]: Resolved type is null
> >> for kind = CLASS
> >> INFO [org.netbeans.api.java.source.ElementHandle]: Cannot resolve:
> >> ElementHandle[kind=CLASS;
> >> sigs=org.nato.unclassified.mice.common.util.StringUtils ]
> >> INFO [org.netbeans.modules.java.editor.imports.ComputeImports]: Cannot
> >> resolve type element "ElementHandle[kind=CLASS;
> >> sigs=org.nato.unclassified.mice.common.util.StringUtils ]".
> >>
> >> And the log is also full of the following entries:
> >>
> >> java.lang.NullPointerException
> >> WARNING [org.netbeans.modules.java.source.indexing.JavaIndex]:
> >> MultiPassCompileWorker caused an exception
> >>
> >>
> >>
> >>
> >> On Fri, Dec 11, 2020 at 2:21 PM Javier Ortiz Bultron <
> >> [email protected]> wrote:
> >>
> >>> Yup, exactly the same behavior I reported. Maybe you can add more
> details
> >>> there.
> >>>
> >>> https://issues.apache.org/jira/browse/NETBEANS-4931
> >>>
> >>>
> >>>
> >>> On Fri, Dec 11, 2020 at 3:34 AM Humphrey Clerx <[email protected]>
> wrote:
> >>>
> >>> > Currently we are using NetBeans 8.2 using JDK 1.8 (AdoptOpenJDK
> 8u272)
> >>> > under Windows 10 (and Solaris 11.3).
> >>> >
> >>> > Our project is a NetBeans Platform Application, consisting of several
> >>> > Module Suites with several Modules. Our project sets an explicit Java
> >>> > Platform to use (nbjdk.active=JDK_1.8). We use Ant for building the
> >>> > project.
> >>> >
> >>> > All of this works fine. But recently I tried to migrate to using
> >>> NetBeans
> >>> > 12.2 with nb-javac installed and enabled. I installed NetBeans 12.2
> and
> >>> > configured it to run with JDK 11 (AdoptOpenJDK 11.0.9) as the default
> >>> JDK
> >>> > (by setting jdk_home in netbeans.conf).
> >>> >
> >>> > I then ran NB12.2 without importing settings from NB8.2. Then I
> >>> defined an
> >>> > additional Java Platform to point to the AdoptOpenJDK 1.8
> installation
> >>> > folder to define the JDK_1.8 platform property.
> >>> >
> >>> > If I then open our project and all the modules, NB12.2 starts a
> >>> background
> >>> > scan. During this scanning it throws numerous NPE's (almost every
> >>> second).
> >>> > I'll add the stacktrace at the end of this mail.
> >>> >
> >>> > And on multiple files an "error badge" appears because it imports a
> >>> class
> >>> > (StringUtils) that happens to be defined in two independent modules
> in
> >>> our
> >>> > project (this is to avoid cyclic dependency and visibility between
> >>> modules
> >>> > needing this class).
> >>> >
> >>> > The error badge appears on the import of StringUtils from the one
> >>> module
> >>> > only, not on the imports of StringUtils from the other module. The
> >>> error
> >>> > badge does not appear on the import in the same module where
> >>> StringUtils is
> >>> > defined, but it does appear on the use of StringUtils in the Unit
> Test
> >>> > Packages in the module.
> >>> >
> >>> > The error badge states the following:
> >>> >
> >>> > cannot find symbol
> >>> >   symbol: class StringUtils
> >>> >   location: package common.util
> >>> >
> >>> >
> >>> > When selecting the "error badge" it asks to "Change to import
> <package
> >>> > name>.StringUtils", suggesting the other StringUtils.java class.
> >>> >
> >>> > Note that when I use Ctrl-O to open the "Go to Type" dialog and type
> >>> > StringUtils it find both instances of StringUtils (plus some
> additional
> >>> > ones e.g. com.sun.xml.internal.ws.util.StringUtils).
> >>> >
> >>> > I tried doing the same with completely disabling/uninstalling
> nb-javac
> >>> and
> >>> > ran 12.2 again from scratch. Doing this, the NPE's still occur, but
> the
> >>> > "error badges" problem disappears.
> >>> >
> >>> > I tried doing the same with installing NB 12.1 (without nb-javac).
> This
> >>> > also stops the NPE's. Installing/enabling nb-javac brings back the
> >>> "error
> >>> > badges" in NB 12.1 as well though.
> >>> >
> >>> > To me it seems nb-javac has a problem with determining visibility of
> >>> > classes between modules when (multiple) classes are defined with the
> >>> same
> >>> > name but that live in a different package/module.
> >>> >
> >>> > And it seems something is broken in NB12.2 with respect to the
> >>> Background
> >>> > scanning in that it throws NPE's all the time.
> >>> >
> >>> > For now I'm using NB12.1 (without nb-javac) and that at least solves
> my
> >>> > "error badge" and NPE problems, but the scanning/etc of javac as
> >>> opposed to
> >>> > using nb-javac seems to slow down the display of e.g. Java Hints and
> >>> other
> >>> > things inside the editor and/or when doing "Find Usages".
> >>> >
> >>> > Note that I'm not having ANY of these problems with NB 8.2 (using
> >>> > nb-javac).
> >>> >
> >>> > Is there anyone who can give some idea on how/why these "error
> badges"
> >>> > appear?
> >>> >
> >>> > And/or why NB12.2 seems to throw so many NPE's (as opposed to
> NB12.1)?
> >>> >
> >>> > Greets,
> >>> >     Humphrey.
> >>> >
> >>> > ----- NPE stacktrace ----
> >>> >
> >>> > java.lang.NullPointerException
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:914)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> com.sun.tools.javac.processing.JavacProcessingEnvironment.access$2500(JavacProcessingEnvironment.java:113)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1298)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1380)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1350)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1240)
> >>> >
> >>> >             at
> >>> > com.sun.tools.javac.api.JavacTaskImpl.enter(JavacTaskImpl.java:404)
> >>> >
> >>> >             at
> >>> >
> >>>
> com.sun.tools.javac.api.JavacTaskImpl.enterTrees(JavacTaskImpl.java:451)
> >>> >
> >>> > [catch] at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.java.source.nbjavac.indexing.MultiPassCompileWorker.compile(MultiPassCompileWorker.java:204)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.java.source.indexing.JavaCustomIndexer.index(JavaCustomIndexer.java:361)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor$2.run(Indexable.java:138)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runIndexer(RepositoryUpdater.java:275)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor.index(Indexable.java:136)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doIndex(RepositoryUpdater.java:2750)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.access$800(RepositoryUpdater.java:2154)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$1.run(RepositoryUpdater.java:2636)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$1.run(RepositoryUpdater.java:2634)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.errors.TaskCache.refreshTransaction(TaskCache.java:540)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.index(RepositoryUpdater.java:2634)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork$4.call(RepositoryUpdater.java:5714)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork$4.call(RepositoryUpdater.java:5622)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$4.run(RepositoryUpdater.java:2127)
> >>> >
> >>> >             at
> >>> > org.openide.util.lookup.Lookups.executeWith(Lookups.java:279)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2123)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2104)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.access$1500(RepositoryUpdater.java:136)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.scanSource(RepositoryUpdater.java:5749)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.scanSources(RepositoryUpdater.java:5419)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$RootsWork.getDone(RepositoryUpdater.java:5038)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:3420)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:6183)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.access$4300(RepositoryUpdater.java:5834)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2$1.run(RepositoryUpdater.java:6099)
> >>> >
> >>> >             at
> >>> > org.openide.util.lookup.Lookups.executeWith(Lookups.java:279)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.RunWhenScanFinishedSupport.performScan(RunWhenScanFinishedSupport.java:83)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:6095)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:6091)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:6091)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
> >>> >
> >>> >             at
> >>> > java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
> >>> >
> >>> >             at
> >>> >
> org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
> >>> >
> >>> >             at
> >>> >
> >>> >
> >>>
> org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
> >>> >
> >>> >             at
> >>> > org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
> >>> >
> >>> >             at
> >>> >
> >>>
> org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
> >>> >
> >>> > --
> >>> > In the mountains of truth, you never climb in vain - Nietzsche
> >>> > #-------------------------------------------------------------
> >>> >  \_O
> >>> > ,__/>
> >>> >   <"
> >>> >    '
> >>> >
> >>>
> >>
> >>
> >> --
> >> In the mountains of truth, you never climb in vain - Nietzsche
> >> #-------------------------------------------------------------
> >>  \_O
> >> ,__/>
> >>   <"
> >>    '
> >>
> >
> >
> > --
> > In the mountains of truth, you never climb in vain - Nietzsche
> > #-------------------------------------------------------------
> >  \_O
> > ,__/>
> >   <"
> >    '
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> > For further information about the NetBeans mailing lists, visit:
> > https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
> >
> >
>


-- 
In the mountains of truth, you never climb in vain - Nietzsche
#-------------------------------------------------------------
 \_O
,__/>
  <"
   '

Reply via email to