hadoop+javaWeb的开发中遇到包冲突问题(java.lang.VerifyError

news/2024/8/30 23:04:13 标签: 大数据开发, javaWeb, hadoop

1.HDFS + WEB 项目 报java.lang.VerifyError... 异常

抛异常:

Exception in thread "main" java.lang.VerifyError: (class: com/google/common/collect/Interners, method: newWeakInterner signature: ()Lcom/google/common/collect/Interner;) Incompatible argument to function

    at org.apache.hadoop.util.StringInterner.<clinit>(StringInterner.java:48)

    at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2472)

    at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2364)

    at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2281)

    at org.apache.hadoop.conf.Configuration.get(Configuration.java:888)

    at org.apache.hadoop.conf.Configuration.getTrimmed(Configuration.java:907)

    at org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1308)

    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:366)

冲突来自 Java_EE_6 中的weld-osgi-bundle.jar 和 guava-11.0.2.jar 这两个包。 com/google/common/collect/Interners 类是 HDFS在创建FileSystem时所需要使用的一个创建Interner类的工具类,但是 weld-osgi-bundle.jar和guava-11.0.2.jar 存在了一样的结构,而weld-osgi-bundle.jar中却不存在Interners类,导致在运行过程中的冲突。

解决方法一:

将web工程应用Java EE 5。笔者的项目使用Java EE 5已经足够了,如果你们的项目中有使用到Java EE 6的功能可以通过另外导入需要的工具实现。

解决方法二:

将Java EE 6 的包通过 ADD JARs... 的方式导入。

注意:不要将 Java EE 6中的包直接放到WebRoot/WEB-INF/lib 下,这样同样会导致包冲突

 

2.报异常java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationRe

java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()

这些都是:

Hadoop相关jar中依赖jetty、servlet等第三方jar包和当前项目中的有冲突,

1.如用的maven的话,在pom文件中排除这些jar包后,启动访问页面就正常了:

<dependency>

  <groupId>org.apache.hadoop</groupId>

  <artifactId>hadoop-common</artifactId>

  <version>${hadoop.version}</version>

    <exclusions>

    <exclusion>

        <groupId>org.mortbay.jetty</groupId>

        <artifactId>jetty</artifactId>

    </exclusion>

    <exclusion>

        <groupId>org.mortbay.jetty</groupId>

        <artifactId>jetty-util</artifactId>

    </exclusion>

    <exclusion>

        <groupId>org.mortbay.jetty</groupId>

        <artifactId>jsp-2.1</artifactId>

    </exclusion>

    <exclusion>

        <groupId>org.mortbay.jetty</groupId>

        <artifactId>jsp-api-2.1</artifactId>

    </exclusion>

    <exclusion>

        <groupId>org.mortbay.jetty</groupId>

        <artifactId>servlet-api-2.1</artifactId>

    </exclusion>

    <exclusion>

        <groupId>javax.servlet</groupId>

        <artifactId>servlet-api</artifactId>

    </exclusion>

    <exclusion>

        <groupId>javax.servlet.jsp</groupId>

        <artifactId>jsp-api</artifactId>

    </exclusion>

    <exclusion>

        <groupId>tomcat</groupId>

        <artifactId>jasper-compiler</artifactId>

    </exclusion>

    <exclusion>

        <groupId>tomcat</groupId>

        <artifactId>jasper-runtime</artifactId>

    </exclusion>

  </exclusions>

</dependency>

 

2,如是您自己手工在lib加入的话,哪就要将这几个包去掉,目前我就是这样做的,可以用运行(有具体版本号,我没写,但是前面都一样)

  jersey-server-1.9.jar

  jasper-runtime-5.5.23.jar

  jasper-compiler-5.5.23.jar

  servlet-api.jar

  jsp-api.jar

  jetty-util.jar

  jetty.jar

 


http://www.niftyadmin.cn/n/1574484.html

相关文章

Hexo常用快捷键

因为自己用hexo github做了博客&#xff0c;所以记录下关于hexo的快捷键&#xff0c;需要搭建过程的同学可参考www.cnblogs.com/liuxianan/p…,讲的挺详细的~ hexo g (生成)hexo s/server (开始本地预览服务)hexo d/deploy (发布上传)hexo clean&&hexo g&&hex…

MyReport报表引擎2.7.6.7新功能

新增二维码控件PDF417设计器新增数据选项卡&#xff0c;能够拖放字段进行绑定相关链接MyReport演示、产品网站相关文章MyReport专栏

大数据开发者应该知道的分布式系统 CAP 理论

无论你是一个系统架构师&#xff0c;还是一个普通开发&#xff0c;当你开发或者设计一个分布式系统的时候&#xff0c;CAP理论是无论如何也绕不过去的。本文就来介绍一下到底什么是CAP理论&#xff0c;如何证明CAP理论&#xff0c;以及CAP的权衡问题。 CAP理论概述 CAP理论&a…

WPF 4 开发Windows 7 跳转列表(JumpList)

原文:WPF 4 开发Windows 7 跳转列表&#xff08;JumpList&#xff09;在之前写过的《Windows 7 任务栏开发系列》中我们通过Visual Studio 2008 借助微软提供的Windows API Code Pack 对应用程序的任务栏进行开发&#xff0c;即将到来的Visual Studio 2010 为我们提供了更方便的…

MyReport报表系统(一)

MyReport报表系统是基于MyReport报表引擎构建的报表系统&#xff0c;主要用于生成数据库报表&#xff0c;无需开发。MyReport报表系统主要包括数据源和报表2个主要模块。数据源模块用于配置报表的数据源。通过编写SQL脚本完成数据的提取。报表模块用于实现报表的设计以及浏览。…

大数据开发不难?快pick这五点

在这个数据时代&#xff0c;对于大数据&#xff0c;应该没有多少人会感到陌生。不过非技术人员对于大数据的各项流程可能没有很清晰的认知&#xff0c;尤其是对大数据的基础实现步骤中的大数据开发的难度&#xff0c;更是一头雾水。 在此&#xff0c;小编为大家总结一下大数据…

调用MyReport实现js直接打印

生成MyReport打印控件打开Flash Builder添加一个应用&#xff0c;命名为MyReportPrintApp。封装myreport的打印方法让外部js能够访问&#xff0c;MyReportPrintApp.mxml代码如下&#xff1a;<?xmlversion"1.0" encoding"utf-8"?><mx:Applicatio…

如何优雅的打包 Spring Boot 应用

为什么80%的码农都做不了架构师&#xff1f;>>> 阅读前请先思考下如果让你将 Spring Boot 应用打成一个压缩包、解压直接运行如何实现&#xff1f; 下面看老司机是如何做的。 0x 下载 Spring Boot 程序示例 下载示例解压下载的文件&#xff0c;删除无用的文件只保留…