You should use a tool like ant or maven for configuring your classpath and
compiling code. Ant allows you to specify a directory hierarchy -- like
${HADOOP_HOME}/lib
Dave
-----Original Message-----
From: praveenesh kumar [mailto:[email protected]]
Sent: Tuesday, May 24, 2011 3:57 AM
To: [email protected]
Subject: Re: How to compile simple Hbase code ?
Okie what i did is added the folder containing my .class file in the
classpath, along with commons-logging-1.0.4.jar and log4j-1.2.15.jar in my
classpath:
so now Myclasspath variable looks like :
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::/usr/local/hadoop/hbase/hbase/lib/commons-logging-1.0.4.jar:/usr/local/hadoop/hbase/hbase/lib/log4j-1.2.15.jar:/usr/local/hadoop/hbase/"
and then I used java -classpath $MYCLASSPATH ExampleClient.java
now its running..
Thanks.!!!
On Tue, May 24, 2011 at 3:52 PM, praveenesh kumar <[email protected]>wrote:
> which class is not in classpath ???
> I already put hadoop-core.jar , hbase-core.jar and zookeeper.jar in my
> classpaths...
> What else I need to put in my classpath ???
>
> On Tue, May 24, 2011 at 3:48 PM, Vivek Mishra <
> [email protected]> wrote:
>
>> It means Class is not in your classpath.
>>
>> -----Original Message-----
>> From: praveenesh kumar [mailto:[email protected]]
>> Sent: Tuesday, May 24, 2011 3:31 PM
>> To: [email protected]
>> Subject: How to compile simple Hbase code ?
>>
>> 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.
>>
>> ________________________________
>>
>> Write to us for a Free Gold Pass to the Cloud Computing Expo, NYC to
>> attend a live session by Head of Impetus Labs on 'Secrets of Building a
>> Cloud Vendor Agnostic PetaByte Scale Real-time Secure Web Application on the
>> Cloud '.
>>
>> Looking to leverage the Cloud for your Big Data Strategy ? Attend Impetus
>> webinar on May 27 by registering at
>> http://www.impetus.com/webinar?eventid=42 .
>>
>>
>> NOTE: This message may contain information that is confidential,
>> proprietary, privileged or otherwise protected by law. The message is
>> intended solely for the named addressee. If received in error, please
>> destroy and notify the sender. Any use of this email is prohibited when
>> received in error. Impetus does not represent, warrant and/or guarantee,
>> that the integrity of this communication has been maintained nor that the
>> communication is free of errors, virus, interception or interference.
>>
>
>