[ 
https://issues.apache.org/jira/browse/HBASE-20187?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16397787#comment-16397787
 ] 

Josh Elser commented on HBASE-20187:
------------------------------------

{quote}Shell does not start if the classpath contains only the ruby 
dependencies, it requires other dependencies as well
{quote}
Well... of course? :)
{quote}If we use {{includeArtifactIds}} then maven assembly won't include 
project dependencies. So currently we haveĀ {{cached_classpath.txt}} which has 
all of the project dependencies except jruby, andĀ 
{{cached_classpath_jruby.txt}} which has all dependencies except jline.
{quote}
Ok, so we have two files of classpaths, one for all HBase process (except the 
shell) and one for the shell. Can you name these more clearly since you changed 
the contents of them and how we use them? Additionally, I guess we should have 
a third for ZKCli too. The point of me putting the jline jar into a specific 
sub-directory was a request from Sean to avoid it getting onto the classpath of 
the RegionServer and Master, but I think with these changes it would end up on 
the classpath of the RS/Master for these "dev installs".

If that's right, do you want to try to add a {{cached_classpath_zkcli.txt}} 
which the dev install can use to make sure it remains consistent with normal 
tarball deploys?

> Shell startup fails with IncompatibleClassChangeError
> -----------------------------------------------------
>
>                 Key: HBASE-20187
>                 URL: https://issues.apache.org/jira/browse/HBASE-20187
>             Project: HBase
>          Issue Type: Bug
>          Components: shell
>    Affects Versions: 2.0.0, 2.1.0
>            Reporter: Peter Somogyi
>            Assignee: Balazs Meszaros
>            Priority: Blocker
>         Attachments: HBASE-20187.branch-2.001.patch, 
> HBASE-20187.branch-2.002.patch
>
>
> Starting shell fails with a jline exception.
> Before {{2402f1fd43 - HBASE-20108 Remove jline exclusion from ZooKeeper}} the 
> shell starts up.
> {noformat}
> $ ./bin/hbase shell
> 2018-03-13 13:56:58,975 WARN  [main] util.NativeCodeLoader: Unable to load 
> native-hadoop library for your platform... using builtin-java classes where 
> applicable
> HBase Shell
> Use "help" to get list of supported commands.
> Use "exit" to quit this interactive shell.
> Version 2.0.0-beta-2, rc998e8d5f9ca3013d175ed447116c0734192f36c, Tue Mar 13 
> 13:49:59 CET 2018
> [ERROR] Terminal initialization failed; falling back to unsupported
> java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but 
> interface was expected
>       at jline.TerminalFactory.create(TerminalFactory.java:101)
>       at jline.TerminalFactory.get(TerminalFactory.java:159)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at 
> org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:438)
>       at 
> org.jruby.javasupport.JavaMethod.invokeStaticDirect(JavaMethod.java:360)
>       at 
> org.jruby.java.invokers.StaticMethodInvoker.call(StaticMethodInvoker.java:40)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:131)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:339)
>       at 
> org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:73)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:77)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
>       at 
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:131)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:339)
>       at 
> org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:73)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:77)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:328)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:141)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:145)
>       at org.jruby.RubyClass.newInstance(RubyClass.java:994)
>       at 
> org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen)
>       at 
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:131)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:339)
>       at 
> org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:73)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:77)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
>       at 
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:131)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:339)
>       at 
> org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:73)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:298)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:79)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:83)
>       at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:428)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:355)
>       at 
> org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:73)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:298)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:79)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:83)
>       at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:428)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:355)
>       at 
> org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:73)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:83)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
>       at 
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:338)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:314)
>       at 
> org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:73)
>       at 
> org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:77)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
>       at 
> org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
>       at 
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
>       at 
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:131)
>       at 
> Users.peter_dot_somogyi.Cloudera.hbase.bin.$_dot_dot_.bin.hirb.invokeOther135:print_banner(/Users/peter.somogyi/Cloudera/hbase/bin/../bin/hirb.rb:166)
>       at 
> Users.peter_dot_somogyi.Cloudera.hbase.bin.$_dot_dot_.bin.hirb.RUBY$script(/Users/peter.somogyi/Cloudera/hbase/bin/../bin/hirb.rb:166)
>       at 
> java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
>       at org.jruby.ir.Compiler$1.load(Compiler.java:95)
>       at org.jruby.Ruby.runScript(Ruby.java:827)
>       at org.jruby.Ruby.runNormally(Ruby.java:746)
>       at org.jruby.Ruby.runNormally(Ruby.java:764)
>       at org.jruby.Ruby.runFromMain(Ruby.java:577)
>       at org.jruby.Main.doRunFromMain(Main.java:417)
>       at org.jruby.Main.internalRun(Main.java:305)
>       at org.jruby.Main.run(Main.java:232)
>       at org.jruby.Main.main(Main.java:204)
> Took 0.0094 seconds
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to