项目添加Maven支持后运行JUnit单元测试出现错误

项目添加Maven支持后,运行JUnit单元测试,出现一下错误:

ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of 

type
[com.travelsky.tdp.pkgStock.integration.logback.appender.mail.SMTPAppender]. 

ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type   

com.travelsky.tdp.pkgStock.integration.logback.appender.mail.SMTPAppender
    at ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type 

com.travelsky.tdp.pkgStock.integration.logback.appender.mail.SMTPAppender
    at  at ch.qos.logback.core.util.OptionHelper.instantiateByClassName

(OptionHelper.java:54)
    at  ......(省略打印信息)
    at  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main

(RemoteTestRunner.java:197)
Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native 

or abstract in class file javax/mail/internet/AddressException
    at  at java.lang.ClassLoader.defineClass1(Native Method)
    at  .....(省略打印信息)
    at  ... 41 common frames omitted  

ERROR in ch.qos.logback.core.joran.spi.Interpreter@192:115 - ActionException in Action for 

tag [appender] ch.qos.logback.core.joran.spi.ActionException:   

ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type 

com.travelsky.tdp.pkgStock.integration.logback.appender.mail.SMTPAppender
    at ch.qos.logback.core.joran.spi.ActionException: 

ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type   

com.travelsky.tdp.pkgStock.integration.logback.appender.mail.SMTPAppender
    at  at ch.qos.logback.core.joran.action.AppenderAction.begin(AppenderAction.java:82)
    at  ......(省略打印信息)
    at  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main

(RemoteTestRunner.java:197)
Caused by: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate 

type com.travelsky.tdp.pkgStock.integration.logback.appender.mail.SMTPAppender
    at  at ch.qos.logback.core.util.OptionHelper.instantiateByClassName

(OptionHelper.java:54)
    at  ... 39 common frames omitted
Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native 

or abstract in class file <span style="color: 

#ff0000;"><strong>javax/mail/internet/<span style="color: 

#ff0000;">Ad</span>dressException</strong></span>
    at  at java.lang.ClassLoader.defineClass1(Native Method)
    at  .....(省略打印信息)
    at  ... 41 common frames omitted

单元测试失败,查找原因,发现如下问题:

1、Maven依赖中使用的 javeee.jar 版本较高,里面包含了 mail相关的接口,和 mail.jar 相冲突 ;

2、javaee.jar 中包含了 mail相关接口的 实现类;

3、MyEclipse自带的javaee.jar 版本和 MyEclipse本身的版本有关:MyEclipse6.5自带的 javaee.jar 中不包含mail相关的接口,而MyEclipse8.0自带的javaee.jar中包含了mail相关的接口, 同时包含了接口的实现;

4、项目中直接用到了mail.jar中的类和方法;

此bug出现的原因是由于类冲突,因此去掉冲突的类即可;但是应该怎么选择呢?

分析如下:

a、此项目是Web项目,因此javaee.jar应保留;

b、javaee.jar中包含mail相关接口的实现,因此javaee.jar应保留;

c、项目中直接用到了mail.jar中的接口,因此mail.jar应该保留;

于是陷入两难。

不过,有个比较拙的方法,Maven依赖中不添加 JavaEE 的依赖,使用MyEclipse中自带的JaveEE依 赖;同时,如果该依赖中包含mail相关的接口,将其删除即可,至此,问题解决。

不过,有人会问,如果我换了MyEclipse的版本,不是要每次都要修改吗,如果忘记了的话,岂不是 白浪费时间嘛.....所以说,该解决方案仅仅是临时性的,比较正统的解决方案如下:

将pom.xml中 <scope>provided</scope> 的依赖放置到 其他依赖的后面即可,而不需 要删除任何依赖。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/tools/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javaee
, 接口
, java myeclipse
, mail
, maven deploy 失败
, myeclipse java
, jar版本
, logback
, core
, 日志系统 logback
, javeee
, 接口maven
, logback access
, 项目添加myeclipse
AT
maven junit单元测试、maven junit4单元测试、maven运行junit、maven添加junit、maven运行单元测试,以便于您获取更多的相关知识。

时间: 2024-10-27 04:01:58

项目添加Maven支持后运行JUnit单元测试出现错误的相关文章

Web项目添加Maven支持后的常见bug和错误

最近,对现有的Web项目添加Maven支持,结果出现了好多的bug,只好google查找原因,在此记录下 ,给自己和他人一个方便: 1.Maven命令执行失败,却没有出错信息  --> 可重新执行一次! 2.BaseConst.java:[1,0] 非法字符:\65279  --> 使用 notepad++ 工具打开之后,发现该文件格式为 UTF-8 (含BOM)格式,如下图: 开发常见bug"> 改为"UTF-8 无 BOM格式编码"即可. 分析:有可能是

如何为Web项目添加Maven支持

对现有的项目集成Maven,需要修改以下地方: 1.将以下代码拷贝到工程根路径下的 .project 文件中的 <buildSpec> 标签下(如果代码存 在,则无须拷贝) <buildCommand> <name>org.maven.ide.eclipse.maven2Builder</name> <arguments></arguments> </buildCommand> 2.将以下代码拷贝到工程根路径下的 .pro

Web项目添加Maven支持

很多时候,进入到某个项目组,并非项目刚刚开始:同样,很多时候,项目并非一开始就有Maven支持: 对现有的项目支持Maven,需要修改以下地方: 1. 将以下代码拷贝到工程根路径下的  .project  文件中的  <buildSpec>  标签下 ( 如果代码存在,则无需拷贝 ) <buildCommand> <name>org.maven.ide.eclipse.maven2Builder</name> <arguments></ar

maven-Maven构建SSH项目添加依赖支持报错

问题描述 Maven构建SSH项目添加依赖支持报错 我在使用Maven搭建SS2H项目的时候,使用了 org.springframeworkspring-web4.1.3.RELEASE 之后web.xml的 org.springframework.web.context.ContextLoaderListener 就会报错,是找不到,去掉了就可以但是在项目启动的时候就会报错,加了之后会有报错说Error:java: java.lang.ArrayIndexOutOfBoundsExceptio

eclipse项目导入android studio后运行按钮是灰色的,无法运行起来???

问题描述 eclipse项目导入android studio后运行按钮是灰色的,无法运行起来??? 5C 按照网上的方法把eclipse-中的项目导入-后运行按钮是灰色的-不知道怎么把-运行起来-是不是还有什么错误× 解决方案 关闭eclipse重启一下看看或者将项目关闭重启一下 解决方案二: 有可能不是完整的项目结构, 解决方案三: 推荐你看看这个.http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0110/2294.html

objective-c-下载代码后运行时出现以下错误怎么解决?

问题描述 下载代码后运行时出现以下错误怎么解决? Launch screens may not use instances of IBUIStoryboardEntryPointIndicator. Launch screens may only have one top level object , which must be a UIView or a kind of UIViewcontroller. Launch screens may not use instances of IBUI

SSH2配置web.xml后运行都出现404错误

问题描述 我的web.xml是这样配置的<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.co

web项目添加flex代码后如何通过CVS提交?

问题描述 我们公司的项目是web project.根据需求,需要用到flex,所以我就在myeclipse上添加了flex builder插件,然后add flex project nature,这样就可以编辑flex文件,但是生成的html 和 .swf文件 都不能通过CVS提交.请问该怎样设置才能提交这些文件? 问题补充:没有什么提示,就是比如你选择要提交flex 生成的 那些.swf,.html等文件时,commit.update等就是灰的,不能提交.我把整个项目都提交后,CVS里并没有f

项目集成Maven后JUnit报ClassNotFoundException错误原因及解决方法

前提:原有项目一切运行正常,单元测试正常执行. 项目开始使用Maven管理,结果发现原有的JUnit测试无法执行,类无法找到(java.lang.ClassNotFoundException).无论如何修改Maven配置,报错依然. 分析原因: MyEclipse之所以能识别项目,是根据.project文件解析:而项目的目录结构则是在.classpath文件中定义.MyEclipse的JUnit插件也是根据以上文件来查找源代码和class文件的存放目录.项目集成Maven后,通过执行maven命