由Spring Petclinic项目的Maven编译时出错

时间:2014-01-31 21:37:19

标签: java eclipse spring maven

我从https://github.com/spring-projects/spring-petclinic/

下载了Spring Petclinic项目

Eclipse编译工作正常 - 我可以从Tomcat运行该项目。但是在maven编译时使用相同的JDK jdk1.6.0_45得到了错误:

  

org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder   必需:java.lang.Object。完整错误如下:

     

[错误]编译错误:[INFO]   -------------------------------------------------- ----------- [ERROR] /spring-petclinic/src/test/java/org/springframework/samples/petclinic/web/VisitsViewTests.java:[58,58]   \弹簧的PetClinic \ SRC \测试\ java中\有机\ springframework的\样本\的PetClinic \网络\ VisitsViewTests.java:58:

     

不兼容的类型;推断类型参数java.lang.Object没有   符合B类型变量的边界:   的 org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder   required:java.lang.Object

使用调试输出运行在一开始就出现了以下错误:

  

SLF4J:无法加载“org.slf4j.impl.StaticLoggerBinder”类。

     

SLF4J:默认为无操作(NOP)记录器实现

     

SLF4J:请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder   进一步的细节。

VisitsViewTests的代码如下:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("VisitsViewTests-config.xml")
@ActiveProfiles("jdbc")
public class VisitsViewTests {

@Autowired
private WebApplicationContext webApplicationContext;

private MockMvc mockMvc;

@Before
public void setup() {
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build();
}

@Test
public void getVisitsXml() throws Exception {
    ResultActions actions =    this.mockMvc.perform(get("/vets.xml").accept(MediaType.APPLICATION_XML));
    actions.andDo(print()); // action is logged into the console
    actions.andExpect(status().isOk());
    actions.andExpect(content().contentType("application/xml"));
    actions.andExpect(xpath("/vets/vetList[id=1]  /firstName").string(containsString("James")));
}
}

1 个答案:

答案 0 :(得分:1)

根据评论,我在pom.xml中更改了Spring版本,指向4.0.1。而不是4.0.0。

<spring-framework.version>4.0.1.RELEASE</spring-framework.version>