[ https://issues.apache.org/jira/browse/NETBEANS-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Laszlo Kishalmi resolved NETBEANS-2346. --------------------------------------- Resolution: Fixed Fix Version/s: Next Marked resolved as the corresponding PR has been merged. > Netbeans throws ArrayIndexOutOfBoundsException when opening Gradle projects > containing unversioned dependencies > --------------------------------------------------------------------------------------------------------------- > > Key: NETBEANS-2346 > URL: https://issues.apache.org/jira/browse/NETBEANS-2346 > Project: NetBeans > Issue Type: Bug > Components: projects - Gradle > Affects Versions: 11.0 > Reporter: Travis > Assignee: Laszlo Kishalmi > Priority: Minor > Labels: pull-request-available > Fix For: Next > > Attachments: netbeans-2346-test-project.zip > > Time Spent: 0.5h > Remaining Estimate: 0h > > I am trying to load a project that uses local .jar file dependencies. The > build.gradle contains something like: > > repositories { > flatDir dirs: [ "$rootDir/lib" ] > } > dependencies { > testImplementation name: 'hamcrest-core-1.3' > } > > And there is a file hamcrest-core-1.3.jar in the project's "lib" folder. > > This all works fine with Netbeans versions prior to 11 (using the third-party > Gradle plugin, of course). > > But when Netbeans 11 vc4 loads the same project, it throws the following > exception: > > java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2 > at > org.netbeans.modules.gradle.api.GradleDependency$ModuleDependency.<init>(GradleDependency.java:85) > > at > org.netbeans.modules.gradle.api.GradleBaseProjectBuilder.processDependencies(GradleBaseProjectBuilder.java:149) > > at > org.netbeans.modules.gradle.api.GradleBaseProjectBuilder.build(GradleBaseProjectBuilder.java:75) > > at > org.netbeans.modules.gradle.api.GradleBaseProjectBuilder$Extractor.extract(GradleBaseProjectBuilder.java:288) > > at > org.netbeans.modules.gradle.GradleProjectCache.createGradleProject(GradleProjectCache.java:432) > > at > org.netbeans.modules.gradle.GradleProjectCache.loadGradleProject(GradleProjectCache.java:257) > > at > org.netbeans.modules.gradle.GradleProjectCache.access$100(GradleProjectCache.java:85) > > [catch] at > org.netbeans.modules.gradle.GradleProjectCache$ProjectLoaderTask.call(GradleProjectCache.java:348) > > at > org.netbeans.modules.gradle.GradleProjectCache$ProjectLoaderTask.call(GradleProjectCache.java:326) > > 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) > > I took a look in GradleDependency.java line 85 and found: > > ModuleDependency(String id, Set<File> artifacts) { > super(id); > this.artifacts = artifacts; > String[] parts = id.split(":"); > group = parts[0]; > name = parts[1]; > version = parts[2]; > } > > That code appears to be making the blind assumption that all dependencies > will have all three parts: group, name, version. But it is possible and > legal to specify only name for local .jar dependencies like mine. > > > After this exception, the "Source Packages" subtree is completely missing > from the "Projects" pane. Although the project load gracefully recovers and > some operations still work on the project, the IDE is effectively unusuable > without the ability to browse packages and classes. > > I found a simple workaround, which is to rewrite the same dependencies in > build.gradle to use the full group:name:version format, with fake group and > version values just to make Netbeans happy: > testImplementation 'dummy:hamcrest-core-1.3:dummy' > With that workaround, Netbeans 11 works much better. > > Although that workaround is acceptable, it results in otherwise unnecessary > clutter in the build.gradle files, so I'm hoping to revert it after a future > Netbeans update. > > Please fix the Netbeans Gradle support to properly handle name-only > dependencies like the example above. Thank you! > > By the way, I don't know if it makes any difference here, but I'm using: > > Windows 10 > Netbeans 11 vc4 > Gradle 5.2 > Java 12 > Gradle Plugin 2.0.2 > > Yes, I'm trying to keep using the old plugin, but the new Gradle built-in > support still interferes in this manner, despite showing up as disabled in > the Plugins browser. Apparently some of the built-in code still runs even in > that scenario? > > If it would help for me to provide an example tiny project to demonstrate > this bug, I could provide one on GitHub... just let me know if that would > help. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists