基于maven的springMvc+Mybatis,搭建项目的时候发现一些问题这里例举下

来源:互联网 发布:二战苏联单兵装备知乎 编辑:程序博客网 时间:2024/04/28 06:49

1.怎样使用maven的tomcat去运行项目?

需要在运行项目的pom文件的build里做如下配置

<plugin>     <groupId>org.apache.tomcat.maven</groupId>     <artifactId>tomcat7-maven-plugin</artifactId>     <version>2.2</version>     <configuration>        <server>tomcat7</server>     </configuration></plugin>

然后还要在settings.xml里配置下面这段代码

<servers>           <server>        <id>tomcat7</id>          <username>admin</username>         <password>admin</password>     </server></servers>

然后右击项目——Run As——Maven build 弹出的对话框中的Goals中输入clean install tomcat7:run然后点下面的Debug,项目就跑起来了

2.另外运行的时候遇到下面的错误别慌

严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]    at java.util.concurrent.FutureTask.report(FutureTask.java:122)    at java.util.concurrent.FutureTask.get(FutureTask.java:188)    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    at org.apache.catalina.startup.Tomcat.start(Tomcat.java:341)    at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.startContainer(AbstractRunMojo.java:1238)    at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.execute(AbstractRunMojo.java:592)    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)    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.buildProject(LifecycleModuleBuilder.java:116)    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)    at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:606)    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)    at java.util.concurrent.FutureTask.run(FutureTask.java:262)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)Caused by: org.apache.catalina.LifecycleException: A child container failed during start    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    ... 6 more

检查你的pom文件,是否引入了servlet-api,因为这是tomcate的jar,如果引入了可能会跟maven中的tomcate插件中的servlet-api冲突,所以干掉就好了,如果是你的底层引用的项目必须使用servlet-api,那么可以加上scope,如下写法

<dependency>    <groupId>javax.servlet</groupId>    <artifactId>servlet-api</artifactId>    <version>2.5</version>    <scope>provided</scope></dependency>

这里的scope可以设置这个包的作用域,设置provided该jar将不被引用他的项目继承。

3.写了一套测试代码,在调用dao方法的时候,mybatis的配置明明都对,但是就是报下面的错误

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sunchenbin.store.dao.TestDao.findTestCount

说白了就是找不到xml中的id=findTestCount的那段sql…

后来发现,maven做instal之后,jar包里没有把xml打进来,坑爹啊,所以找到了下面这段代码,加到pom文件的build里面,重新instal就可以了。

<resources>    <resource>        <directory>src/main/java</directory>        <includes>            <include>**/*.properties</include>            <include>**/*.xml</include>        </includes>        <filtering>false</filtering>    </resource></resources>
1 0
原创粉丝点击