2

I have to use Karaf 3.0.1 to run some legacy code that requires some changes. I don't often use Karaf directly, but I usually use a much more recent version.

I installed Karaf 3.0.1 from the archive site, set a couple of properties (KARAF_OPTS to set a proxy, and JAVA_MAX_MEM) and then started Karaf.

The first thing I need to run (according to a setup process written by someone else) is a config:property-append command.

When I do this, it just prints Error executing command: java.lang.NullPointerException, with no other information.

I even get this with just config:property-append --help, so it's not an issue with the parameters I'm giving it.

What might be wrong here, and what can I do to get more information?

Update:

It did occur to me now to check in the Karaf distribution for a log file, and I did find the NPE there, so I'm including that stack trace, and a stack trace that comes before it.

    java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.apache.aries.proxy.impl.gen.ProxySubclassAdapter.visit(ProxySubclassAdapter.java:274)
    at org.objectweb.asm.ClassReader.accept(Unknown Source)
    at org.objectweb.asm.ClassReader.accept(Unknown Source)
    at org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.processClass(ProxySubclassGenerator.java:245)
    at org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.generateAndLoadSubclass(ProxySubclassGenerator.java:224)
    at org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.getProxySubclass(ProxySubclassGenerator.java:126)
    at org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.newProxySubclassInstance(ProxySubclassGenerator.java:161)
    at org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:103)
    at org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingInterceptingProxy(AbstractProxyManager.java:75)
    at org.apache.aries.proxy.impl.AbstractProxyManager.createInterceptingProxy(AbstractProxyManager.java:53)
    at org.apache.aries.blueprint.container.ServiceRecipe$TriggerServiceFactory.getService(ServiceRecipe.java:535)
    at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:308)
    at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:219)
    at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:320)
    at org.apache.felix.framework.Felix.getService(Felix.java:3568)
    at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:468)
    at org.apache.karaf.service.guard.impl.GuardProxyCatalog$ProxyServiceFactory.getService(GuardProxyCatalog.java:424)
    at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:308)
    at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:219)
    at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:320)
    at org.apache.felix.framework.Felix.getService(Felix.java:3568)
    at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:468)
    at org.apache.karaf.shell.console.completer.CommandsCompleter.unProxy(CommandsCompleter.java:298)
    at org.apache.karaf.shell.console.completer.CommandsCompleter.checkData(CommandsCompleter.java:234)
    at org.apache.karaf.shell.console.completer.CommandsCompleter.complete(CommandsCompleter.java:86)
    at org.apache.karaf.shell.console.impl.jline.CompleterAsCompletor.complete(CompleterAsCompletor.java:32)
    at jline.console.ConsoleReader.complete(ConsoleReader.java:3077)[26:jline:2.11.0]
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2501)[26:jline:2.11.0]
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2162)[26:jline:2.11.0]
    at org.apache.karaf.shell.console.impl.jline.ConsoleImpl.readAndParseCommand(ConsoleImpl.java:280)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.karaf.shell.console.impl.jline.ConsoleImpl.run(ConsoleImpl.java:207)[37:org.apache.karaf.shell.console:3.0.1]
    at java.lang.Thread.run(Thread.java:745)[:1.8.0_102]
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.doRun(ConsoleFactoryService.java:126)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3$1.run(ConsoleFactoryService.java:117)
    at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_102]
    at org.apache.karaf.jaas.modules.JaasHelper.doAs(JaasHelper.java:47)[38:org.apache.karaf.jaas.modules:3.0.1]
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.run(ConsoleFactoryService.java:115)[37:org.apache.karaf.shell.console:3.0.1]
2017-09-27 15:41:18,970 | ERROR | Local user karaf | ShellUtil                        | 37 - org.apache.karaf.shell.console - 3.0.1 | Exception caught while executing command
java.lang.NullPointerException
    at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:61)
    at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
    at org.apache.karaf.shell.console.impl.jline.ConsoleImpl$DelegateSession.execute(ConsoleImpl.java:521)
    at org.apache.karaf.shell.console.impl.jline.ConsoleImpl.run(ConsoleImpl.java:212)
    at java.lang.Thread.run(Thread.java:745)[:1.8.0_102]
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.doRun(ConsoleFactoryService.java:126)[37:org.apache.karaf.shell.console:3.0.1]
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3$1.run(ConsoleFactoryService.java:117)
    at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_102]
    at org.apache.karaf.jaas.modules.JaasHelper.doAs(JaasHelper.java:47)[38:org.apache.karaf.jaas.modules:3.0.1]
    at org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.run(ConsoleFactoryService.java:115)[37:org.apache.karaf.shell.console:3.0.1]

As you can see, an IllegalArgumentException comes before the NPE. I don't know whether they are related.

Note that I'm running this with Java 8.

Does Karaf 3.0.1 not run with Java 8?

I asked about this on the Karaf user list, and one person said they've had no trouble running Karaf 3.x with Java 8.

Update:

Despite the fact that a knowledgeable person said Karaf 3.x (they tested 3.0.7) works fine with Java 8, I found that after I changed my Karaf to use 1.7.0_131, my problem went away. So I guess that's my answer.

Grant Miller
  • 27,532
  • 16
  • 147
  • 165
David M. Karr
  • 14,317
  • 20
  • 94
  • 199

0 Answers0