2016-07-22 54 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文件夾,但它是更好地保持它的應用程序內)。