Tomcat启动报错 Caused by: java.lang.IllegalArgumentException: MALFORMED

前言

Tomcat启动报错 具体如下


ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:970)
at org.apache.catalina.startup.HostConfig D e p l o y W a r . r u n ( H o s t C o n f i g . j a v a : 1841 ) a t j a v a . u t i l . c o n c u r r e n t . E x e c u t o r s DeployWar.run(HostConfig.java:1841) at java.util.concurrent.Executors DeployWar.run(HostConfig.java:1841)atjava.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
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: java.lang.IllegalArgumentException: MALFORMED
at java.util.zip.ZipCoder.toString(ZipCoder.java:58)
at java.util.zip.ZipFile.getZipEntry(ZipFile.java:566)
at java.util.zip.ZipFile.access 900 ( Z i p F i l e . j a v a : 60 ) a t j a v a . u t i l . z i p . Z i p F i l e 900(ZipFile.java:60) at java.util.zip.ZipFile 900(ZipFile.java:60)atjava.util.zip.ZipFileZipEntryIterator.next(ZipFile.java:524)
at java.util.zip.ZipFile Z i p E n t r y I t e r a t o r . n e x t E l e m e n t ( Z i p F i l e . j a v a : 499 ) a t j a v a . u t i l . z i p . Z i p F i l e ZipEntryIterator.nextElement(ZipFile.java:499) at java.util.zip.ZipFile ZipEntryIterator.nextElement(ZipFile.java:499)atjava.util.zip.ZipFileZipEntryIterator.nextElement(ZipFile.java:480)
at java.util.jar.JarFile J a r E n t r y I t e r a t o r . n e x t ( J a r F i l e . j a v a : 257 ) a t j a v a . u t i l . j a r . J a r F i l e JarEntryIterator.next(JarFile.java:257) at java.util.jar.JarFile JarEntryIterator.next(JarFile.java:257)atjava.util.jar.JarFileJarEntryIterator.nextElement(JarFile.java:266)
at java.util.jar.JarFile$JarEntryIterator.nextElement(JarFile.java:247)
at org.apache.tomcat.util.scan.JarFileUrlJar.nextEntry(JarFileUrlJar.java:184)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2009)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1970)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1923)
at org.apache.catalina.startup.ContextConfig.processClasses(ContextConfig.java:1230)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1134)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:769)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5063)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
… 10 more
提示:以下是本篇文章正文内容,下面案例可供参考

一、分析错误信息

通过网上调查给出的原因是tomcat运行的时候有class文件名称为中文字符。
由于包中的文件夹、文件特别多,不可能每个查看,并且这个包本来是好用的,但通过zip命令打包后就不好用了(业务需要),所以使用通过给源码的方式,catalina.jar—org.apache.catalina.startup.ContextConfig----processAnnotationsJar方法中添加输出日志形式,找到具体的错误文件。

二、操作步骤

1.获取源码:

https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.96/src/apache-tomcat-8.5.96-src.zip

2.idea引入工程:

在这里插入图片描述
pom文件内容:

代码如下(示例):

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>Tomcat8.0</artifactId>
  <name>Tomcat8.0</name>
  <version>8.0</version>

  <build>
    <finalName>Tomcat8.0</finalName>
    <sourceDirectory>java</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <resources>
      <resource>
        <directory>java</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>test</directory>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>

        <configuration>
          <encoding>UTF-8</encoding>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>5.0.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.unboundid</groupId>
      <artifactId>unboundid-ldapsdk</artifactId>
      <version>6.0.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.7.0</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant-apache-log4j</artifactId>
      <version>1.6.5</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant-commons-logging</artifactId>
      <version>1.6.5</version>
    </dependency>
    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.2</version>
    </dependency>
    <dependency>
      <groupId>javax.xml.rpc</groupId>
      <artifactId>javax.xml.rpc-api</artifactId>
      <version>1.1</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt.core.compiler</groupId>
      <artifactId>ecj</artifactId>
      <version>4.6.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

3.找到对应的class文件 源码文件添加输出:

在这里插入图片描述

4.生成class文件,替换tomcat中的class文件:

重新build后会有对应的class文件生成,将文件直接拷贝到catalina.jar内,替换源文件,再次运行tomcat,会有具体的路径信息输出
在这里插入图片描述


总结

Tomcat启动报错 Caused by: java.lang.IllegalArgumentException: MALFORMED

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值