2016-07-22 50 views
0

我写了与Java工作正常HBase的一个基本的Java代码。与Java Servlet的运行HBase的

public class HBaseTest { 

    public static String newFunc() throws IOException { 

     // Instantiating configuration class 
     Configuration config = HBaseConfiguration.create(); 

     Connection connection = ConnectionFactory.createConnection(config); 
     Table table = connection.getTable(TableName.valueOf("customer")); 

     Get g = new Get(Bytes.toBytes("jsmith")); 

     Result result = table.get(g); 

     // Reading values from Result class object 
     byte[] value = result.getValue(Bytes.toBytes("addr"), Bytes.toBytes("city")); 

     return Bytes.toString(value); 

    } 
} 

所以我决定使用此代码和HBase的作为我的Web应用程序开发的一部分,所以我在Eclipse的Java EE IDE中打开一个新的动态Web项目,添加文件,改变了功能的名称,并呼吁它来自一个servlet。我还添加了所需的jar文件。 但我坚持了以下错误:

java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166) 
    at HBaseTest.newFunc(HBaseTest.java:18) 
    at BakwasServlet.doGet(BakwasServlet.java:16) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

这个错误现在折腾我。有没有人遇到过这种情况,或者有谁能帮我解决这个问题?我没有设置hbase_home变量。我也不需要它用于java代码。

在此先感谢!

+2

你在哪里添加的HBase的JAR文件?它应该位于Web应用程序的WEB-INF/lib'文件夹中。 (顺便说一句,有你用Google搜索'ClassNotFoundException的org.apache.hadoop.hbase.HBaseConfiguration'?有很多的结果,也有不少在这里SO) –

+0

我直接加载的jar文件中的项目并没有做它在WEB_INF/lib中。请继续写下你的评论作为答案,以便我可以标记它。谢谢! – LearningToCode

回答

0

你在哪里添加的HBase的JAR文件?它应该是在你的web应用的WEB-INF/lib文件夹(或在服务器的lib文件夹,但它是更好地保持它的应用程序内)。