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.