I am simply using HBase API, not doing any Map-reduce work on it.

Following is the code I have written , simply creating the file on HBase:

import java.io.IOException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
public class ExampleClient {
 public static void main(String args []) throws IOException
 {
  HBaseConfiguration config = new HBaseConfiguration();

  HBaseAdmin admin = new HBaseAdmin(config);
  HTableDescriptor htd = new HTableDescriptor("test");
  HColumnDescriptor hcd = new HColumnDescriptor("data");
  htd.addFamily(hcd);
  admin.createTable(htd);

  byte [] tablename = htd.getName();
  HTableDescriptor [] tables = admin.listTables();

  if(tables.length !=1 && Bytes.equals(tablename, tables[0].getName()))
  {
   throw new IOException("Failed to create table");
  }

  HTable table = new HTable(config,tablename);
  byte[] row1 = Bytes.toBytes("row1");
  Put p1 = new Put(row1);
  byte[] databytes = Bytes.toBytes("data");
  p1.add(databytes,Bytes.toBytes("1"),Bytes.toBytes("value1"));
  table.put(p1);

  Get g = new Get(row1);
  Result result = table.get(g);
  System.out.println("Get : "+ result);
  Scan scan = new Scan();
  ResultScanner scanner = table.getScanner(scan);
  try
  {
   for(Result scannerResult: scanner)
   {
    System.out.println("Scan : " + scannerResult);
   }
  }catch(Exception e ){
   e.printStackTrace();
  }
  finally{
   scanner.close();
  }
  table.close();
 }
}

Now I have set the classpath variable in /etc/environment as

*
MYCLASSPATH="/usr/local/hadoop/hadoop/hadoop-0.20.2-core.jar:/usr/local/hadoop/hbase/hbase/hbase-0.20.6.jar:/usr/local/hadoop/hbase/hbase/lib/zookeeper-3.2.2.jar
*
now I am compiling my code with javac command

*$javac -classpath $MYCLASSPATH ExampleClient.java
*
It is working fine.
While running, I am using java command
 *$java -classpath $MYCLASSPATH ExampleClient*,

then I am getting the following error :
*Exception in thread "main" java.lang.NoClassDefFoundError: ExampleClient
Caused by: java.lang.ClassNotFoundException: ExampleClient*

*        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)*

Could not find the main class: ExampleClient. Program will exit.

But I am running the code from the same location. and ExampleClient.class
file exists at that location.

Reply via email to