You could try shading the new guava to a different package and use that in your code. E.g. jena-shaded-guava does that
Op 20 jan. 2018 09:02 schreef "Debraj Manna" <[email protected]>: > Mark > > hbase and hadoop is using the old guava. Is there a way I can use the > latest guava in my code and let hadoop and hbase use the old guava. > > On 20-Jan-2018 1:19 PM, "Mark Prins" <[email protected]> wrote: > > > It seems that the guava versions are not API compatible, so shading is > > unlikely to help. You will need to downgrade to a compatible version of > > guava or get the other projects to upgrade. > > -M > > > > Op 20 jan. 2018 07:51 schreef "Debraj Manna" <[email protected]>: > > > > I have posted more details in stackoverflow > > <https://stackoverflow.com/questions/48140339/guava-23-5- > > conflict-with-hbase-testing-util-1-2>. > > I could not add all the details here because of size limitation. > > > > In a project I am using Guava 23.5 but some of the dependencies (hadoop & > > hbase) are using old Guava 14. This is causing an exception during > runtime > > > > As mentioned here <https://www.elastic.co/blog/to-shade-or-not-to-shade> > I > > tried to shade the Hbase dependency in a new module named shadedcdh. > > pom.xml > > looks like below > > > > ?xml version="1.0" encoding="UTF-8"?> > > > > <project xmlns="http://maven.apache.org/POM/4.0.0" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > > http://maven.apache.org/xsd/maven-4.0.0.xsd"> > > <parent> > > <artifactId>main</artifactId> > > <groupId>com.vnera</groupId> > > <version>0.001-SNAPSHOT</version> > > </parent> > > <modelVersion>4.0.0</modelVersion> > > > > <artifactId>shaded-cdh</artifactId> > > <packaging>jar</packaging> > > > > <dependencies> > > <dependency> > > <groupId>org.apache.hbase</groupId> > > <artifactId>hbase-testing-util</artifactId> > > <version>1.2.0-cdh5.7.0</version> > > </dependency> > > <dependency> > > <groupId>org.apache.hadoop</groupId> > > <artifactId>hadoop-client</artifactId> > > <version>${hadoop.version}</version> > > </dependency> > > <dependency> > > <groupId>org.apache.hadoop</groupId> > > <artifactId>hadoop-common</artifactId> > > <version>${hadoop.version}</version> > > </dependency> > > <dependency> > > <groupId>org.apache.hbase</groupId> > > <artifactId>hbase-client</artifactId> > > <!-- This must stay in sync with hbase version we deploy. --> > > <version>1.2.0-cdh5.7.0</version> > > </dependency> > > </dependencies> > > > > <build> > > <plugins> > > <plugin> > > <groupId>org.apache.maven.plugins</groupId> > > <artifactId>maven-shade-plugin</artifactId> > > <version>2.4.1</version> > > <executions> > > <execution> > > <phase>package</phase> > > <goals> > > <goal>shade</goal> > > </goals> > > <configuration> > > <relocations> > > <relocation> > > <pattern>com.google.common</pattern> > > > > <shadedPattern>shaded.com.google.common</shadedPattern> > > </relocation> > > </relocations> > > <transformers> > > <transformer > > implementation="org.apache.maven.plugins.shade.resource. > > ManifestResourceTransformer" > > /> > > </transformers> > > </configuration> > > </execution> > > </executions> > > </plugin> > > </plugins> > > </build> > > > > <repositories> > > <repository> > > <id>cloudera</id> > > <url>https://repository.cloudera.com/artifactory/ > > cloudera-repos/ > > </url> > > </repository> > > </repositories> > > </project> > > > > I excluded hbase and hadoop dependency from my project and added > > shadedcdh as dependency. But this is still giving me the same > > exception. The dependency tree I have posted in the stackoverflow. I > > could not post here because of size limitation. Can someone let me > > know how can I avoid the conflict? > > >
