Help needed with Bndtools Eclipse Installation

I have a legacy OSGi project that is currently developed with Java 8 in an Eclipse Mars installation with Bndtools 3.5.

The goal is, to get the project running on an as-recent-as-possible Java version.

The latest known-to-work-with-the-project Bndtools version is 4.0.0 from an earlier attempt six years ago. Unfortunetly version 4.0.0 seems to be no longer publicly available. For that reason I set-up an Eclipse 2023-03 with Bndtools 4.3.0. But now I’m stuck getting the following error on build in my Eclipse log:

!ENTRY bndtools.core 4 0 2025-05-09 11:04:58.919
!MESSAGE Init of workspace
!STACK 0
java.lang.reflect.InvocationTargetException
	at org.osgi.util.promise.DeferredPromiseImpl.getValue(DeferredPromiseImpl.java:128)
	at aQute.bnd.repository.osgi.OSGiIndex.getBridge(OSGiIndex.java:206)
	at aQute.bnd.repository.osgi.OSGiRepository.versions(OSGiRepository.java:201)
	at aQute.bnd.build.Project.getBundle(Project.java:1276)
	at aQute.bnd.build.Project.getBundles(Project.java:617)
	at aQute.bnd.build.Project.parseBuildpath(Project.java:558)
	at aQute.bnd.build.Project.prepare(Project.java:400)
	at aQute.bnd.build.Project.getTarget(Project.java:1663)
	at aQute.bnd.build.Project.getOutputFile(Project.java:2080)
	at aQute.bnd.build.Project.getDeliverable(Project.java:2731)
	at aQute.bnd.build.Project.getBundleFromProject(Project.java:1453)
	at aQute.bnd.build.Project.getBundle(Project.java:1234)
	at aQute.bnd.build.Project.getBundles(Project.java:617)
	at aQute.bnd.build.Project.parseBuildpath(Project.java:558)
	at aQute.bnd.build.Project.prepare(Project.java:400)
	at aQute.bnd.build.Project.getDependson(Project.java:865)
	at aQute.bnd.build.Workspace.getBuildOrder(Workspace.java:555)
	at bndtools.central.Central.getWorkspace(Central.java:253)
	at bndtools.central.Central.getProject(Central.java:575)
	at bndtools.central.Central.getProject(Central.java:579)
	at org.bndtools.builder.classpath.BndContainerInitializer$Updater.<init>(BndContainerInitializer.java:228)
	at org.bndtools.builder.classpath.BndContainerInitializer.requestClasspathContainerUpdate(BndContainerInitializer.java:116)
	at org.bndtools.builder.classpath.BndContainerInitializer.requestClasspathContainerUpdate(BndContainerInitializer.java:165)
	at org.bndtools.builder.classpath.BndContainerCompilationParticipant.aboutToBuild(BndContainerCompilationParticipant.java:19)
	at org.eclipse.jdt.internal.core.builder.JavaBuilder.initializeBuilder(JavaBuilder.java:632)
	at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:182)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1020)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:247)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:392)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:395)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:354)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:616)
	at org.eclipse.core.internal.resources.Project$1.run(Project.java:571)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2380)
	at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:609)
	at org.eclipse.core.internal.resources.Project.build(Project.java:121)
	at bndtools.editor.project.BuildOperationsPart$RebuildJob.runInWorkspace(BuildOperationsPart.java:111)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.osgi.util.promise.FailedPromisesException: java.lang.IllegalArgumentException: URI has an authority component
	at org.osgi.util.promise.PromiseFactory$All.run(PromiseFactory.java:362)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalArgumentException: URI has an authority component
	at java.base/java.io.File.<init>(File.java:425)
	at aQute.bnd.http.HttpClient$HttpConnection.doCached0(HttpClient.java:483)
	at aQute.bnd.http.HttpClient$HttpConnection.doCached(HttpClient.java:448)
	at aQute.bnd.http.HttpClient$HttpConnection.call(HttpClient.java:398)
	at org.osgi.util.promise.DeferredPromiseImpl$Submit.run(DeferredPromiseImpl.java:767)
	... 3 more
Root exception:
org.osgi.util.promise.FailedPromisesException: java.lang.IllegalArgumentException: URI has an authority component
	at org.osgi.util.promise.PromiseFactory$All.run(PromiseFactory.java:362)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalArgumentException: URI has an authority component
	at java.base/java.io.File.<init>(File.java:425)
	at aQute.bnd.http.HttpClient$HttpConnection.doCached0(HttpClient.java:483)
	at aQute.bnd.http.HttpClient$HttpConnection.doCached(HttpClient.java:448)
	at aQute.bnd.http.HttpClient$HttpConnection.call(HttpClient.java:398)
	at org.osgi.util.promise.DeferredPromiseImpl$Submit.run(DeferredPromiseImpl.java:767)
	... 3 more

!ENTRY bndtools.builder 1 0 2025-05-09 11:04:58.920
!MESSAGE Unable to get bnd project for project de.ba.kasse.configuration
!STACK 0
java.lang.reflect.InvocationTargetException
	at org.osgi.util.promise.DeferredPromiseImpl.getValue(DeferredPromiseImpl.java:128)
	at aQute.bnd.repository.osgi.OSGiIndex.getBridge(OSGiIndex.java:206)
	at aQute.bnd.repository.osgi.OSGiRepository.versions(OSGiRepository.java:201)
	at aQute.bnd.build.Project.getBundle(Project.java:1276)
	at aQute.bnd.build.Project.getBundles(Project.java:617)
	at aQute.bnd.build.Project.parseBuildpath(Project.java:558)
	at aQute.bnd.build.Project.prepare(Project.java:400)
	at aQute.bnd.build.Project.getTarget(Project.java:1663)
	at aQute.bnd.build.Project.getOutputFile(Project.java:2080)
	at aQute.bnd.build.Project.getDeliverable(Project.java:2731)
	at aQute.bnd.build.Project.getBundleFromProject(Project.java:1453)
	at aQute.bnd.build.Project.getBundle(Project.java:1234)
	at aQute.bnd.build.Project.getBundles(Project.java:617)
	at aQute.bnd.build.Project.parseBuildpath(Project.java:558)
	at aQute.bnd.build.Project.prepare(Project.java:400)
	at aQute.bnd.build.Project.getDependson(Project.java:865)
	at aQute.bnd.build.Workspace.getBuildOrder(Workspace.java:555)
	at bndtools.central.Central.getWorkspace(Central.java:253)
	at bndtools.central.Central.getProject(Central.java:575)
	at bndtools.central.Central.getProject(Central.java:579)
	at org.bndtools.builder.classpath.BndContainerInitializer$Updater.<init>(BndContainerInitializer.java:228)
	at org.bndtools.builder.classpath.BndContainerInitializer.requestClasspathContainerUpdate(BndContainerInitializer.java:116)
	at org.bndtools.builder.classpath.BndContainerInitializer.requestClasspathContainerUpdate(BndContainerInitializer.java:165)
	at org.bndtools.builder.classpath.BndContainerCompilationParticipant.aboutToBuild(BndContainerCompilationParticipant.java:19)
	at org.eclipse.jdt.internal.core.builder.JavaBuilder.initializeBuilder(JavaBuilder.java:632)
	at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:182)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1020)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:247)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:392)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:395)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:354)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:616)
	at org.eclipse.core.internal.resources.Project$1.run(Project.java:571)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2380)
	at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:609)
	at org.eclipse.core.internal.resources.Project.build(Project.java:121)
	at bndtools.editor.project.BuildOperationsPart$RebuildJob.runInWorkspace(BuildOperationsPart.java:111)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.osgi.util.promise.FailedPromisesException: java.lang.IllegalArgumentException: URI has an authority component
	at org.osgi.util.promise.PromiseFactory$All.run(PromiseFactory.java:362)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalArgumentException: URI has an authority component
	at java.base/java.io.File.<init>(File.java:425)
	at aQute.bnd.http.HttpClient$HttpConnection.doCached0(HttpClient.java:483)
	at aQute.bnd.http.HttpClient$HttpConnection.doCached(HttpClient.java:448)
	at aQute.bnd.http.HttpClient$HttpConnection.call(HttpClient.java:398)
	at org.osgi.util.promise.DeferredPromiseImpl$Submit.run(DeferredPromiseImpl.java:767)
	... 3 more
Root exception:
org.osgi.util.promise.FailedPromisesException: java.lang.IllegalArgumentException: URI has an authority component
	at org.osgi.util.promise.PromiseFactory$All.run(PromiseFactory.java:362)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalArgumentException: URI has an authority component
	at java.base/java.io.File.<init>(File.java:425)
	at aQute.bnd.http.HttpClient$HttpConnection.doCached0(HttpClient.java:483)
	at aQute.bnd.http.HttpClient$HttpConnection.doCached(HttpClient.java:448)
	at aQute.bnd.http.HttpClient$HttpConnection.call(HttpClient.java:398)
	at org.osgi.util.promise.DeferredPromiseImpl$Submit.run(DeferredPromiseImpl.java:767)
	... 3 more

I’m not able to track the root cause of the problem. Any help/hint is appreciated.

Side question: Is Bndtools 4.0.0 Eclipse plug-in still available anywhere? Maybe this would help migrating the project in as little steps as possible.

Hi,
the Stacktrace suggests, that one of the Paths of an OSGIRepository has a bogus path. It is likely that something in the way how paths are handled has changed since 3.5. Maybe something starting with // instead of file://.

4.0 should be available somewhere, but I have no clue where. If you want to update to a newer java anyway, I suggest you jump to 7.0 (requires Java 17 to build) und go to 6.4 (still builds with a JDK 8). Besides minor things like this, thinks should still work as before.

URI has an authority component

As @juergen-albert suggested, have a look somewhere in your cnf folder e.g. cnf/build.bnd and check for paths of your repository definitions. Maybe an old url pointing to a shared "windows network drive URL somewhere starting with \\?)

Thanks for your reply, but I cannot find any such explicit URIs in the project.

Can you post all the -plugin instructions you have in your cnf/buid.bnd and in all the .bnd files in your cnf/ext/ folder?