Maven知识

在IDEA编辑工具,tomcat8.0,Maven3.5.3,JDK1.8。启动Tomcat时候如下错误:


16-Jun-2018 19:21:54.538 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sanding]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1736)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:482)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@1ee67b2]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4907)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5042)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 42 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@b9cf5b]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:724)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 45 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:142)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
... 48 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(ZipFile.java:60)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:717)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:419)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at sun.misc.IOUtils.readFully(IOUtils.java:65)
at java.util.jar.JarFile.getBytes(JarFile.java:425)
at java.util.jar.JarFile.getManifestFromReference(JarFile.java:193)
at java.util.jar.JarFile.getManifest(JarFile.java:180)
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:140)

... 49 more


1,根据网上给的解决方案,更换tomcat版本,在tomcat的配置文件catalina.properties中进行配置,检测web.xml文件是否有配置错误。都不起任何作用。


2,最靠谱的原因:应该是jar包冲突了。


3,打开cmd,然后cd到项目的根目录。

    3.1 先clean一下,启动服务tomcat看是否有用。mvn clean  清除项目产生的零时文件,主要是target目录下的。

    3.2 执行mvn package。建一个新的仓库位置。  mven package  项目打包工具,主要是在target下生成jar或war文件。

    3.3 启动tomcat,看是否报错。


4,常用maven指令。

        4.1 mvn complie   编译源代码,一般编译模块下的src/main/java。

        4.2 mvn version    查看mvn版本信息。

        4.3 mvn  install     将打包的jar或war文件,复制到本地仓库,可供其他模块使用。

        4.4 mvn   deploy   将打包的jar或war文件,发布到远程。供其他开发人员使用。

        4.5 mvn   dependency:tree   打印出项目的整个依赖树。


5.Maven逻辑与传统逻辑的对比

        5.1 传统逻辑

            5.1.1        访问 http://logging.apache.org/log4j/

            5.1.2        下载 Log4 j jar

            5.1.3        复制 jar 到项目类路径

            5.1.4        手动将其包含到项目的依赖

            5.1.5        所有的管理需要一切由自己做

            5.1.6        如果有 Log4j 版本升级,则需要重复上述步骤一次。


        5.2 Maven逻辑

            5.2.1        你需要知道 log4j 的 Maven 坐标,例如:

                                                                                           <groupId>log4j</groupId>

                                                                                           <artifactId>log4j</artifactId>

                                                                                            <version>1.2.14</version>

            5.2.2        它会自动下载 log4j 1.2.14 版本库。如果“version”标签被忽略,它会自动升级库时当有新的版本时。

            5.2.3         声明 Maven 的坐标转换成 pom.xml 文件。

                                                         <dependencies>

                                                                 <dependency>

                                                                       <groupId>log4j</groupId>

                                                                        <artifactId>log4j</artifactId>

                                                                         <version>1.2.14</version>

                                                                 </dependency>

                                                      </dependencies>

            5.2.4         Maven 编译或构建,log4j jar 会自动下载,并把它放到 Maven 本地存储库。

            5.2.5        所有由 Maven 管理。

 

6.Maven  查找资源顺序

        6.1        当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – http://repo1.maven.org/maven2/ 查找下载。

       6.2         如果本地厂库和中央厂库都没有,则需要去其他厂库中获取,需要在pom.xml中配置厂库位置。

                               声明远程厂库:<repositories>
                                                 <repository>
                                                      <id>java.net</id>
                                                       <url>https://maven.java.net/content/repositories/public/</url>
                                                  </repository>
                                             </repositories>
                            
                        依赖:<dependency>
                                <groupId>org.jvnet.localizer</groupId>
                                <artifactId>localizer</artifactId>
                            </dependency>

        6.3        执行顺序:Maven的依赖库查询顺序更改为

              1,在 Maven 本地资源库中搜索,如果没有找到,进入第 2 步,否则退出。

              2,在 Maven 中央存储库搜索,如果没有找到,进入第 3 步,否则退出。

              3,在java.net Maven的远程存储库搜索,如果没有找到,提示错误信息,否则退出。

 
 

    基本思考流程:

               1,Maven的安装需要JDK环境,maven的版本也需要对应的JDK版本。Maven只需要配置环境变量就可以了。

               2,将Maven与IDE关联起来。IDEA,Eclipse,Myeclipse。

               3,设置好本地厂库,在pom.xml写好坐标,mvn package (IDEA需要在当前项目下进行命令执行)直接去中央厂库下载。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值