高分求解 maven spring 版本冲突

meran 2012-02-18 05:11:46
使用maven 管理代码,


<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.12</version>
</dependency>
</dependencies>
</plugin>

强制使用 junit47来执行


[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
3.2:compile (default-compile) on project storm: Compilation failure
[ERROR] \work\workspace\storm\src\main\java\edu\hzsf\storm\dal\dao\BaseTestCase.
java:[6,7] 无法访问 junit.framework.TestCase
[ERROR] 未找到 junit.framework.TestCase 的类文件
[ERROR] public class BaseTestCase extends AbstractDependencyInjectionSpringConte
xtTests{
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on
project storm: Compilation failure
\work\workspace\storm\src\main\java\edu\hzsf\storm\dal\dao\BaseTestCase.java:[6,
7] 无法访问 junit.framework.TestCase
未找到 junit.framework.TestCase 的类文件
public class BaseTestCase extends AbstractDependencyInjectionSpringContextTests{


at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
ild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
352)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation fail
ure
\work\workspace\storm\src\main\java\edu\hzsf\storm\dal\dao\BaseTestCase.java:[6,
7] 无法访问 junit.framework.TestCase
未找到 junit.framework.TestCase 的类文件
public class BaseTestCase extends AbstractDependencyInjectionSpringContextTests{


at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompiler
Mojo.java:656)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:209)
... 19 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc
eption



出现这个问题 。 于是我把junit 版本换成3.8.1 去掉上面的pom 配置,但是还是提示上面的错误。我的单元测试是继承了
AbstractDependencyInjectionSpringContextTests 是不是这里出现的问题?

如果需要 mvn dependency:tree 或者 mvn install -X 可以联系我,所有分求解。
...全文
563 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
meran 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 ldh911 的回复:]

你的情况说明你beans版本是3.0.5,结果core版本是2.06或2.5.8,这肯定是完蛋的。

另外还不知道你${sping.version}这个参数配置的究竟是多少。

自己去网上下载吧,直接把一个完整的Spring版本下载下来,然后放到对应目录中,参数也注意配对应的版本号。
[/Quote]
昨天我发现我DEBUG 不了, connot connect to VM ,查了一下大概是我以前用迅雷加速器,把我的ipV6怎么样了,我发现出现上面问题的是,JUNIT根本启动不了,然后我重装了机器就好了。




MiceRice 2012-02-19
  • 打赏
  • 举报
回复
java.lang.NoSuchMethodError: org.springframework.core.MethodParameter.getParameterAnnotations()

现在真的是 JAR 包版本问题了。。。。。。

应该是你 spring-beans.jar 与 spring-core.jar 的版本不一致。

另外没看到类似于:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${version.spring}</version>
</dependency>
这样的东西?
meran 2012-02-19
  • 打赏
  • 举报
回复
新问题 mvn clean package -Dmaven.test.skip=true 可以打包成功 ,但是测试还是不通



<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>edu.hzsf</groupId>
<artifactId>storm</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>storm Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
<struts.version>2.2.1.1</struts.version>
<struts.d.javassist>3.12.1.GA</struts.d.javassist>
<spring.version>3.0.5.RELEASE</spring.version>
<ibatis.version>2.0.8</ibatis.version>
<junit.version>4.8</junit.version>
<slf4j.version>1.6.1</slf4j.version>
<logback.version>0.9.29</logback.version>
</properties>

<dependencies>
<!-- j2ee5依赖包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<!-- google -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>10.0.1</version>
</dependency>

<!-- junit测试依赖包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<!-- struts2 依赖包 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>${struts.version}</version>
</dependency>

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>

<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>${struts.d.javassist}</version>
</dependency>

<!-- spring 依赖包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>

</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>

<!-- ibatis依赖包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-ibatis</artifactId>
<version>${ibatis.version}</version>
</dependency>

<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>2.3.4.726</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.14</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>

<!-- slf4j+LOGBack依赖包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>

<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6.0</version>
<scope>system</scope>
<systemPath>C:/Program Files/Java/jdk1.6.0_18/lib/tools.jar</systemPath>
</dependency>



</dependencies>

<build>
<plugins>


<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>gbk</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<junitArtifactName>junit:junit</junitArtifactName>
<includes>
<include>**/*Test.java</include>
<include>**/*Tests.java</include>
</includes>
</configuration>
</plugin>

</plugins></build><!-- pluging远程资源仓库配置 -->



</project>




错误


-------------------------------------------------------------------------------
Test set: edu.hzsf.storm.dal.dao.daoibatis.UserDAOTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 10.678 sec <<< FAILURE!
testGetUser(edu.hzsf.storm.dal.dao.daoibatis.UserDAOTest) Time elapsed: 10.328 sec <<< ERROR!
java.lang.NoSuchMethodError: org.springframework.core.MethodParameter.getParameterAnnotations()[Ljava/lang/Object;
at org.springframework.beans.factory.config.DependencyDescriptor.getAnnotations(DependencyDescriptor.java:203)
at org.springframework.beans.factory.annotation.QualifierAnnotationAutowireCandidateResolver.isAutowireCandidate(QualifierAnnotationAutowireCandidateResolver.java:106)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.isAutowireCandidate(DefaultListableBeanFactory.java:377)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.isAutowireCandidate(DefaultListableBeanFactory.java:364)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:670)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:610)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1076)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:982)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:329)
at org.springframework.test.AbstractDependencyInjectionSpringContextTests.injectDependencies(AbstractDependencyInjectionSpringContextTests.java:208)
at org.springframework.test.AbstractDependencyInjectionSpringContextTests.prepareTestInstance(AbstractDependencyInjectionSpringContextTests.java:183)
at org.springframework.test.AbstractSingleSpringContextTests.setUp(AbstractSingleSpringContextTests.java:103)
at junit.framework.TestCase.runBare(TestCase.java:132)
at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:79)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)


[code=Java]
[/code]



MiceRice 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhao251021539 的回复:]
问题解决了。我把TestBseCase 放在 main /java 里面了, 而juint 是配置在 test的scope 中的,在
main /java compile 的时候肯定是找不到的。
[/Quote]

Congratulations!
meran 2012-02-19
  • 打赏
  • 举报
回复
问题解决了。我把TestBseCase 放在 main /java 里面了, 而juint 是配置在 test的scope 中的,在
main /java compile 的时候肯定是找不到的。
  • 打赏
  • 举报
回复
junit 的话要加 dependency 的,没看到啊?

  <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
...
</dependencies>
djlxue 2012-02-19
  • 打赏
  • 举报
回复
maven 里没看到对Junit添加依赖
MiceRice 2012-02-19
  • 打赏
  • 举报
回复
◎classpath 是指装JDK配的那个么?
——系统全局性的CLASSPATH设置,在Windows下用命令行“set CLASSPATH=xxoo;xxoo;” 或者 “控制面板>系统>高级>环境变量”来设置的。

◎还是 maven 仓库也要配在里面?
——也可以把junit.jar包复制到maven仓库中,也就是<localRepository>目录</localRepository>所配置的这个目录位置。


CLASSPATH的装载优先级比maven仓库要高,但是一般而言并不推荐,一般建议是保持CLASSPATH干净,以避免不同项目间出现JAR包冲突(比如CLASSPATH指向了一个旧版本的Log4j.jar,而实际上项目需要新版本的Log4j.jar,由于CLASSPATH装载级别高而导致项目运行出错)。


我的问题只是问问你,你有没有确认你的junit.jar用了某种方式可以绝对确认被引入了?

meran 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ldh911 的回复:]
哥们,这个错误,只能是javac的时候找不到junit的jar包,请问你是怎么在哪里?怎么配置CLASSPATH的?
[/Quote]
classpath 是指装JDK配的那个么?
还是 maven 仓库也要配在里面?

MiceRice 2012-02-19
  • 打赏
  • 举报
回复
你的情况说明你beans版本是3.0.5,结果core版本是2.06或2.5.8,这肯定是完蛋的。

另外还不知道你${sping.version}这个参数配置的究竟是多少。

自己去网上下载吧,直接把一个完整的Spring版本下载下来,然后放到对应目录中,参数也注意配对应的版本号。

meran 2012-02-19
  • 打赏
  • 举报
回复
SpringFrameWork 下面 ,core 也有三个版本, 有些包 是 2.06 有些是2.5.8的 这应该就是出问题的地方吧 ,有没有什么Spring All In ONE 之类的东西,统一Spring 的版本
meran 2012-02-19
  • 打赏
  • 举报
回复
发现 仓库里面有 2.0.8 2.0.6 3.0.5三个文件夹 , 但是只有3.0.5里面有jar

按照maven 依赖的第一原则 ,为什么还会出现2.0.8 2.0.6 两个版本的beans 。

另外我想知道 你们一般怎么调节依赖之间的关系? 还有你开发时候用的 一般的标准 pom 配置 ,一些框架的版本
meran 2012-02-19
  • 打赏
  • 举报
回复
加上
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${sping.version}</version>
</dependency>

还是同样的问题
康派尔 2012-02-18
  • 打赏
  • 举报
回复
推荐一个插件用用吧,m2eclipse从这里添加依赖
MiceRice 2012-02-18
  • 打赏
  • 举报
回复
哥们,这个错误,只能是javac的时候找不到junit的jar包,请问你是怎么在哪里?怎么配置CLASSPATH的?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧