From 660507643d5c4b2d02dad62eeef589e17631afa5 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 3 Nov 2023 11:08:09 +0100 Subject: [PATCH] Make JShell bundle classpath more robust --- .../osgi/OsgiExecutionControlProvider.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/org.argeo.cms.jshell/src/org/argeo/internal/cms/jshell/osgi/OsgiExecutionControlProvider.java b/org.argeo.cms.jshell/src/org/argeo/internal/cms/jshell/osgi/OsgiExecutionControlProvider.java index 66a0ed992..9ebf97ed0 100644 --- a/org.argeo.cms.jshell/src/org/argeo/internal/cms/jshell/osgi/OsgiExecutionControlProvider.java +++ b/org.argeo.cms.jshell/src/org/argeo/internal/cms/jshell/osgi/OsgiExecutionControlProvider.java @@ -203,7 +203,8 @@ public class OsgiExecutionControlProvider implements ExecutionControlProvider { continue bundles; } Path p = bundleToPath(frameworkLocation, b); - classpath.add(p.toString()); + if (p != null) + classpath.add(p.toString()); } return classpath.toString(); @@ -213,11 +214,17 @@ public class OsgiExecutionControlProvider implements ExecutionControlProvider { String location = bundle.getLocation(); if (location.startsWith("initial@reference:file:")) { location = location.substring("initial@reference:file:".length()); - Path p = frameworkLocation.getParent().resolve(location).toRealPath(); - // TODO load dev.properties from OSGi configuration directory - if (Files.isDirectory(p)) - p = p.resolve("bin"); - return p; + Path p = frameworkLocation.getParent().resolve(location).toAbsolutePath(); + if (Files.exists(p)) { + p = p.toRealPath(); + // TODO load dev.properties from OSGi configuration directory + if (Files.isDirectory(p)) + p = p.resolve("bin"); + return p; + } else { + log.warn("Ignore bundle " + p + " as it does not exist"); + return null; + } } Path p = Paths.get(location); return p; -- 2.30.2