Duo Zhang created HBASE-17940:
---------------------------------

             Summary: HMaster can not start due to Jasper related classes 
conflict
                 Key: HBASE-17940
                 URL: https://issues.apache.org/jira/browse/HBASE-17940
             Project: HBase
          Issue Type: Bug
            Reporter: Duo Zhang


I got this
{noformat}
java.lang.RuntimeException: Failed construction of Master: class 
org.apache.hadoop.hbase.master.HMaster.
        at 
org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2692)
        at 
org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:235)
        at 
org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:139)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at 
org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:127)
        at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2703)
Caused by: java.lang.NoSuchFieldError: IS_SECURITY_ENABLED
        at 
org.apache.jasper.compiler.JspRuntimeContext.<init>(JspRuntimeContext.java:194)
        at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:159)
        at 
org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:640)
        at 
org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:419)
        at 
org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:875)
        at 
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:348)
        at 
org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1379)
        at 
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1341)
        at 
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:772)
        at 
org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)
        at 
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:517)
        at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at 
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
        at 
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
        at 
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
        at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at 
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
        at org.eclipse.jetty.server.Server.start(Server.java:405)
        at 
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:106)
        at 
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
        at org.eclipse.jetty.server.Server.doStart(Server.java:372)
        at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.apache.hadoop.hbase.http.HttpServer.start(HttpServer.java:969)
        at org.apache.hadoop.hbase.http.InfoServer.start(InfoServer.java:100)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.putUpWebUI(HRegionServer.java:1887)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:620)
        at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:461)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at 
org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2685)
        ... 5 more
{noformat}

The problem is that, we have same classes in two jars, 
javax.servlet.jsp-2.3.2.jar and jasper-compiler-5.5.23.jar, such as 
org.apache.jasper.Constants and org.apache.jasper.compiler.JspRuntimeContext. 
Here seems for JspRuntimeContext we use the version from javax.servlet.jsp, but 
for Constants we use the version from jasper-compiler.

javax.servlet.jsp is a transitive dependency from jetty jsp, and 
jasper-compiler is a dependency directly in our pom for hbase-server.

We need to find a way to deal with it.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to