w.r.t. the 'Could not create' exception, it is created by CompatibilityFactory#createExceptionString() which is in hbase-hadoop-compat module.
Looks like we can make the message clearer since in hbase 1.0+ there is no hbase-hadoop1-compat module anymore. Cheers On Wed, Apr 15, 2015 at 11:59 AM, Schulze, Dean (Contractor) < [email protected]> wrote: > I've found the set of dependencies that allows you to run a simple unit > test with HBaseTestingUtility which are shown below. > > Note that you need both hbase-hadoop-compat and hbase-hadoop2-compat. If > you leave out hbase-hadoop2-compat it gives the misleading error message: > > java.lang.RuntimeException: Could not create interface > org.apache.hadoop.hbase.test.MetricsAssertHelper Is the hadoop > compatibility jar on the classpath? > > It should say that you need the hadoop2 compatibility .jar on the > classpath. > > I don't understand why the transitive dependencies for running a test are > not correct. > > > <dependencies> > <dependency> > <groupId>org.apache.hadoop</groupId> > <artifactId>hadoop-minicluster</artifactId> > <version>2.5.1</version> > </dependency> > <dependency> > <groupId>org.apache.hbase</groupId> > <artifactId>hbase-server</artifactId> > <version>1.0.0</version> > <scope>test</scope> > </dependency> > <dependency> > <groupId>org.apache.hbase</groupId> > <artifactId>hbase-server</artifactId> > <version>1.0.0</version> > <type>test-jar</type> > </dependency> > <dependency> > <groupId>org.apache.hbase</groupId> > <artifactId>hbase-hadoop-compat</artifactId> > <version>1.0.0</version> > <scope>test</scope> > <type>test-jar</type> > </dependency> > <dependency> > <groupId>org.apache.hbase</groupId> > <artifactId>hbase-hadoop2-compat</artifactId> > <version>1.0.0</version> > <scope>test</scope> > <type>test-jar</type> > </dependency> > </dependencies> > > -----Original Message----- > From: Ted Yu [mailto:[email protected]] > Sent: Tuesday, April 14, 2015 3:49 PM > To: [email protected] > Subject: Re: Unit test can't resolve org.apache.hadoop.hbase.client.Table > > $ jar tvf > > ~/.m2/repository/org/apache/hadoop/hadoop-common/2.5.1/hadoop-common-2.5.1-tests.jar > | grep StaticMapping > 3858 Fri Sep 05 16:05:30 PDT 2014 > org/apache/hadoop/net/StaticMapping.class > 6368 Fri Sep 05 16:05:30 PDT 2014 > org/apache/hadoop/net/TestStaticMapping.class > > Here is snippet of dependency tree: > > [INFO] +- org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test > [INFO] | +- org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test > > Here is snippet from pom.xml: > > <dependency> > <groupId>org.apache.hadoop</groupId> > <artifactId>hadoop-minicluster</artifactId> > <version>${hadoop-two.version}</version> > Cheers > > On Tue, Apr 14, 2015 at 2:28 PM, Schulze, Dean (Contractor) < > [email protected]> wrote: > > > So I added these two dependencies and now I get this error. > > > > Are the transitive dependencies for Hadoop and hbase not mapped properly? > > > > > > java.lang.NoClassDefFoundError: org/apache/hadoop/net/StaticMapping > > > > <dependency> > > <groupId>org.apache.hadoop</groupId> > > <artifactId>hadoop-hdfs</artifactId> > > <version>2.5.1</version> > > </dependency> > > > > <dependency> > > <groupId>org.apache.hadoop</groupId> > > <artifactId>hadoop-hdfs</artifactId> > > <version>2.5.1</version> > > <type>test-jar</type> > > <scope>test</scope> > > </dependency> > > > > > > > > -----Original Message----- > > From: Ted Yu [mailto:[email protected]] > > Sent: Tuesday, April 14, 2015 3:10 PM > > To: [email protected] > > Subject: Re: Unit test can't resolve > > org.apache.hadoop.hbase.client.Table > > > > MiniDFSCluster is in this jar: > > > > jar tvf > > > > ~/.m2/repository/org/apache/hadoop/hadoop-hdfs/2.5.1/hadoop-hdfs-2.5.1 > > -tests.jar > > | grep MiniDFSCluster > > 1261 Fri Sep 05 16:08:24 PDT 2014 > > org/apache/hadoop/hdfs/MiniDFSCluster$1.class > > 7431 Fri Sep 05 16:08:24 PDT 2014 > > org/apache/hadoop/hdfs/MiniDFSCluster$Builder.class > > 1498 Fri Sep 05 16:08:24 PDT 2014 > > org/apache/hadoop/hdfs/MiniDFSCluster$DataNodeProperties.class > > 1396 Fri Sep 05 16:08:24 PDT 2014 > > org/apache/hadoop/hdfs/MiniDFSCluster$NameNodeInfo.class > > 57246 Fri Sep 05 16:08:24 PDT 2014 > > org/apache/hadoop/hdfs/MiniDFSCluster.class > > > > Take a look at the following in pom.xml (around line 1835): > > > > <dependency> > > <groupId>org.apache.hadoop</groupId> > > <artifactId>hadoop-hdfs</artifactId> > > <version>${hadoop-two.version}</version> > > <type>test-jar</type> > > <scope>test</scope> > > > > Cheers > > > > On Tue, Apr 14, 2015 at 1:52 PM, Schulze, Dean (Contractor) < > > [email protected]> wrote: > > > > > That solves one problem, but now I get this: > > > > > > java.lang.NoClassDefFoundError: > > > org/apache/hadoop/hdfs/MiniDFSCluster > > > > > > That class is in project in mysql-connector-java-5.1.12.jar, which > > > doesn't seem right for an in-memory test of HBase. > > > > > > Do I need to add a test-jar or something else in the test scope? > > > > > > > > > -----Original Message----- > > > From: Ted Yu [mailto:[email protected]] > > > Sent: Tuesday, April 14, 2015 2:26 PM > > > To: [email protected] > > > Subject: Re: Unit test can't resolve > > > org.apache.hadoop.hbase.client.Table > > > > > > Please add dependency on hbase-client module where Table resides. > > > > > > Cheers > > > > > > On Tue, Apr 14, 2015 at 1:18 PM, Schulze, Dean (Contractor) < > > > [email protected]> wrote: > > > > > > > I'm using HBaseTestingUtility in a Junit test. It compiles, but > > > > when I run the test (either from the command line or from Eclipse) > > > > it gives the error below: > > > > > > > > java.lang.Error: Unresolved compilation problem: > > > > The type org.apache.hadoop.hbase.client.Table > > > > cannot be resolved. It is indirectly referenced from required > > > > .class files > > > > > > > > > > > > Does this indicate that the transitive dependencies are incorrect? > > > > Here are my mvn dependency and code: > > > > > > > > <dependency> > > > > <groupId>org.apache.hbase</groupId> > > > > <artifactId>hbase-server</artifactId> > > > > <version>1.0.0</version> > > > > </dependency> > > > > <dependency> > > > > > > > > <groupId>org.apache.hbase</groupId> > > > > <artifactId>hbase-server</artifactId> > > > > <version>1.0.0</version> > > > > <type>test-jar</type> > > > > </dependency> > > > > > > > > > > > > private static HBaseTestingUtility utility; > > > > > > > > @Before > > > > public void setUp() throws Exception { > > > > utility = new HBaseTestingUtility(); > > > > utility.startMiniCluster(); > > > > } > > > > > > > > @Test > > > > public void test() { > > > > > > > > try { > > > > HTableInterface > > > > table = utility.createTable(Bytes.toBytes("TestTable"), TestCF); > > > > > > > > .... > > > > > > > > > > > > > >
