Getting back to this... My netbeans-13/java/modules/ext folder contained: nb-javac-jdk-19-api.jar nb-javac-jdk-19.jar
So JDK 19 versions, not 17. I must have used a later version and not realized it? Or maybe I misread the instructions and thought NB 13 was a minimum version. I don't know, but it was clearly a mistake on my part. I see the build.xml in netbeans-jackpot30/cmdline/tool/ does explicitly references the 17 version. I re-downloaded the binary zip for NB 13, which does indeed have v17 of nb-javac. After I replaced my netbeans 13 folder the build succeeded. I recall some talk of the nb-javac being phased out. Is that correct? Thanks! Scott On Fri, Jan 27, 2023 at 1:43 AM Jan Lahoda <lah...@gmail.com> wrote: > Hi Scott, > > Thanks for the interest in Jackpot. > > The Maven plugin basically only calls a standalone command line tool, which > is also uploaded on Maven central > (org.apache.netbeans.modules.jackpot30:tool:13.0), although that's a bit > harder to use without the launchers (launchers are part of the release on > Apache). > > Overall, the tool re-uses what's in NetBeans as much as possible, and packs > the relevant classes into a single jar file. The main place where the hints > (declarative or hardcoded) are ran is around this place: > > https://github.com/apache/netbeans-jackpot30/blob/13e22c19c583f2ca687f951c64aab9f3f271c0fc/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java#L563 > > Generally calls to BatchSearch, which is an internal API. It handles > various searches through multiple files, and then calls: > > https://github.com/apache/netbeans/blob/master/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/hints/HintsInvoker.java > > which is the class that runs some list of hints over a single file. > > It should be possible to open the "cmdline" directory as a module suite in > NetBeans, and the "cmdline/tool" directory as a project under it. > > For building the tool, based on the NPE, it seems nb-javac was not > available, possibly not prepended to classpath while the tests were run. It > is here in the NB 13 distribution: > java/modules/ext/nb-javac-jdk-17-api.jar > java/modules/ext/nb-javac-jdk-17.jar > > And the command line that prepends it on the bootclasspath (for JDK 8), or > excludes standard javac (for JDK 11+) is here: > > https://github.com/apache/netbeans-jackpot30/blob/13e22c19c583f2ca687f951c64aab9f3f271c0fc/cmdline/tool/build.xml#L115 > > So, probably some of that didn't work well. I tried on my Linux, and it > built, I, unfortunately, don't have a Mac to try right now. I'll keep > thinking of it. > > Thanks, > Jan > > > On Fri, Jan 27, 2023 at 5:48 AM Scott Palmer <swpal...@gmail.com> wrote: > > > I haven't been able to get Jackpot to build... (If there is a better > place > > to ask about this, let me know) > > > > I followed the instructions in cmdline/README.md > > > > Using Ant v 1.10.12 > > Maven v 3.8.4 > > With JAVA_HOME set to JDK 8 > > > > I ran: > > > > ant -DNETBEANS_PLATFORM=/Users/scott/dev/netbeans-13 > > -DJDK11=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home > > -DJDK17=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home > > build-and-test > > > > It chugged away for a bit but then failed a bunch of tests: > > > > [junit] Testcase: > > > > > testConfigurationFile(org.netbeans.modules.jackpot30.cmdline.CreateToolTest): > > Caused an ERROR > > [junit] junit.framework.AssertionFailedError: expected:<0> but > was:<1> > > [junit] java.io.IOException: junit.framework.AssertionFailedError: > > expected:<0> but was:<1> > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.CreateToolTest.reallyRunCompiler(CreateToolTest.java:77) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.doRunCompiler(MainTest.java:1128) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.doRunCompiler(MainTest.java:1072) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.doRunCompiler(MainTest.java:1068) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.testConfigurationFile(MainTest.java:191) > > [junit] at > org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:77) > > [junit] at > > org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:476) > > [junit] at > > org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:402) > > [junit] at java.lang.Thread.run(Thread.java:750) > > [junit] Caused by: junit.framework.AssertionFailedError: expected:<0> > > but was:<1> > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.CreateToolTest.reallyRunCompiler(CreateToolTest.java:72) > > [junit] > > [junit] > > [junit] Testcase: > > > > > testWarningsAreErrors(org.netbeans.modules.jackpot30.cmdline.CreateToolTest): > > FAILED > > [junit] expected:<[${workdir}/src/test/Test.java:4: warning: > > [Usage_of_Collection_Map_size_equals_0] c.size() == 0 can be replaced > with > > c.isEmpty() > > [junit] boolean b1 = c.size() == 0; > > [junit] ^ > > [junit] ${workdir}/src/test/Test.java:5: warning: > > [Usage_of_Collection_Map_size_equals_0] c.size() == 0 can be replaced > with > > c.isEmpty() > > [junit] boolean b2 = c.size() == 0; > > [junit] ^ > > [junit] ]> but was:<[]> > > > > Basically a few like above, and then a lot more that looked like this: > > > > [junit] Testcase: > > testParameterFile(org.netbeans.modules.jackpot30.cmdline.MainTest): > Caused > > an ERROR > > [junit] java.lang.NullPointerException > > [junit] java.lang.IllegalStateException: > java.lang.NullPointerException > > [junit] at > > org.netbeans.modules.jackpot30.cmdline.Main.compile(Main.java:357) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.reallyRunCompiler(MainTest.java:1155) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.doRunCompiler(MainTest.java:1128) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.doRunCompiler(MainTest.java:1072) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.doRunCompiler(MainTest.java:1068) > > [junit] at > > > > > org.netbeans.modules.jackpot30.cmdline.MainTest.testParameterFile(MainTest.java:879) > > [junit] at > org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:77) > > [junit] at > > org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:476) > > [junit] at > > org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:402) > > [junit] at java.lang.Thread.run(Thread.java:750) > > [junit] Caused by: java.lang.NullPointerException > > [junit] at > > > > > org.netbeans.modules.java.hints.spiimpl.batch.BatchSearch.findOccurrencesLocal(BatchSearch.java:92) > > [junit] at > > > > > org.netbeans.modules.java.hints.spiimpl.batch.BatchSearch.findOccurrences(BatchSearch.java:85) > > [junit] at > > org.netbeans.modules.jackpot30.cmdline.Main.handleGroup(Main.java:564) > > [junit] at > > org.netbeans.modules.jackpot30.cmdline.Main.compile(Main.java:338) > > > > > > Any hints are appreciated. > > > > Regards, > > > > Scott > > > > > > On Thu, Jan 26, 2023 at 1:49 PM Ernie Rael <err...@raelity.com> wrote: > > > > > On 23/01/26 10:25 AM, Scott Palmer wrote: > > > > Well, yeah of course.. but is there a documented public API? > > > > The maven plugin doesn't actually do refactoring, right? It just > > > > identifies hints? > > > > > > At: https://netbeans.apache.org/jackpot/ > > > > > > > To apply the changes produced by the declarative hints, run > > > > jackpot30:apply: > > > > $ mvn -q jackpot30:apply && git diff > > > > > > Haven't tried it, but sure looks like it does the refactoring. > > > > > > -ernie > > > > > > > I was just wondering if there are notes somewhere that go a bit > deeper > > > than > > > > showing how to use it from the command line or NetBeans. > > > > > > > > I did find a README in the cmdline folder. So at least that's a > start > > > for > > > > getting something to build. > > > > > > > > Thanks, > > > > > > > > Scott > > > > > > > > On Thu, Jan 26, 2023 at 11:22 AM Michael Bien <mbie...@gmail.com> > > wrote: > > > > > > > >> you check how the maven plugin is implemented and adopt it for > gradle? > > > >> > > > >> -mbien > > > >> > > > >> On 26.01.23 17:13, Scott Palmer wrote: > > > >> > > > >> I don't use Maven if I can help it. > > > >> > > > >> But you misunderstand, I want to call Jackpot from my code to get it > > to > > > >> perform some refactoring from control of my program. Getting a list > of > > > >> possible hints may happen later. > > > >> Or perhaps a more general use... What would I do if I wanted to > write > > a > > > >> Gradle plugin to do the same as the Maven plugin? Assuming I know > the > > > >> Gradle side, how do I call the Jackpot methods? > > > >> > > > >> Regards, > > > >> > > > >> Scott > > > >> > > > >> > > > >> On Thu, Jan 26, 2023 at 10:50 AM Michael Bien <mbie...@gmail.com> > > > wrote: > > > >> > > > >>> On 26.01.23 16:01, Scott Palmer wrote: > > > >>>> I wanted to experiment with Jackpot for a project I'm working on. > > How > > > >>>> dependent on the NetBeans Platform is the Jackpot code at > > > >>>> https://github.com/apache/netbeans-jackpot30 ? > > > >>>> Is there such a thing as a jackpot library jar that does not > depend > > on > > > >>>> NetBeans classes? > > > >>>> If I wanted to make a standalone tool to do certain > transformations > > > on a > > > >>>> Java code base where would I start? > > > >>>> > > > >>>> Thanks for any help you can provide, > > > >>>> > > > >>>> Scott > > > >>>> > > > >>> you should be able to use it from maven in your build: > > > >>> > > > >>> <plugin> > > > >>> <groupId>org.apache.netbeans.modules.jackpot30</groupId> > > > >>> <artifactId>jackpot30-maven-plugin</artifactId> > > > >>> <version>13.0</version> > > > >>> <configuration> > > > >>> <configurationFile>jackpot-settings.xml</configurationFile> > > > >>> <failOnWarnings>true</failOnWarnings> > > > >>> </configuration> > > > >>> <executions> > > > >>> <execution> > > > >>> <id>jackpot</id> > > > >>> <phase>compile</phase> > > > >>> <goals> > > > >>> <goal>analyze</goal> > > > >>> </goals> > > > >>> </execution> > > > >>> </executions> > > > >>> </plugin> > > > >>> > > > >>> > > > >>> I use it mostly from within NetBeans itself for refactoring or > > > >>> inspection tasks with the help of the ".hint" files. > > > >>> > > > >>> I sometimes upload the inspections which I think are reusable or > more > > > >>> generic here: > > > >>> > > > >>> https://github.com/mbien/jackpot-inspections > > > >>> > > > >>> readme explains how to use hint files. > > > >>> > > > >>> -mbien > > > >>> > > > >>> > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: dev-unsubscr...@netbeans.apache.org > > > For additional commands, e-mail: dev-h...@netbeans.apache.org > > > > > > For further information about the NetBeans mailing lists, visit: > > > https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists > > > > > > > > > > > > > > >