There's a complete example here: https://github.com/tomq42/karaf-command-feature
Thanks. > On 07 September 2017 at 09:15 Jean-Baptiste Onofré <[email protected]> wrote: > > > Hi Tom, > > can you share the pom.xml you use to create your custom distro ? > > It looks like some resources are missing in the distro. > > Regards > JB > > On 09/07/2017 10:06 AM, [email protected] wrote: > > Clearly this can't be true, since karaf ships with features containing > > bundles containing commands, but I can't get it to work. > > > > I've created a simple karaf shell command, following the tutorial in the > > documentation. As per the example, it just says "hello world". > > If I build that as an isolated bundle, install it into karaf and run it, it > > works, as per the documentation. > > > > What I'm trying to do though is build that into a feature to include into a > > custom karaf distribution. > > I can build the feature, and I can manually install the feature into a > > karaf distribution, and it works OK, I can run the resulting command. > > I can build the karaf distribution containing the feature OK, but when I > > then run the resulting karaf then fails to initialise properly. > > > > > > In the log file, I get: > > Adding features: > > Changes to perform: > > Region: root > > Bundles to install: > > ... > > mvn:org.apache.karaf.shell/org.apache.karaf.shell.console/4.1.2 > > null <-- This is clearly bad > > mvn:org.apache.karaf.shell/org.apache.karaf.shell.ssh/4.1.2 > > ... > > > > Installing bundles: > > ... > > null <-- This is the same null as before and causes the problem below. > > Error installing boot features > > java.lang.IllegalStateException: Resource has no uri > > at > > org.apache.karaf.features.internal.service.Deployer.getBundleInputStream(Deployer.java:1460) > > [10:org.apache.karaf.features.core:4.1.2] > > at > > org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:766) > > [10:org.apache.karaf.features.core:4.1.2] > > at > > org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1233) > > [10:org.apache.karaf.features.core:4.1.2] > > at > > org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$0(FeaturesServiceImpl.java:1132) > > [10:org.apache.karaf.features.core:4.1.2] > > at > > org.apache.karaf.features.internal.service.FeaturesServiceImpl$$Lambda$15/951619949.call(Unknown > > Source) [10:org.apache.karaf.features.core:4.1.2] > > at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] > > at > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > > [?:?] > > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > > [?:?] > > > > The console then goes funny, and you get: > > Error in initialization script: etc\shell.init.script: String index out of > > range: 0 > > which I'm assuming is a knockon issue. > > > > I've got no idea where this "null" bundle is coming from, but it's clearly > > causing the karaf initialisation to go wrong. > > > > I have created an example project at > > https://github.com/tomq42/karaf-command-feature which I hope shows the > > problem. > > Just build with maven, then run the > > karaf-distro\target\assembly\bin\karaf(.bat) command. You should see the > > error above on the console, and the error in the log. > > > > Any insight would be very welcome. > > Thanks. > > > > -- > Jean-Baptiste Onofré > [email protected] > http://blog.nanthrax.net > Talend - http://www.talend.com
