Tomcat启动时出现java.lang.IllegalArgumentException: Document base D:\apache-tomcat-6.0.20\webapps\XXX doe

本文详细解析了Tomcat启动时遇到的java.lang.IllegalArgumentException: Document base目录不存在或不可读错误,通过删除conf/Catalina/localhost下对应的XML文件解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.IllegalArgumentException: Document base D:\apache-tomcat-6.0.20\webapps\bookstore does not exist or is not a readable directory
 at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
 at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4048)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4217)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630)
 at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:516)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
 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:585)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

 

今天我碰到了这个问题,明明那个项目在webapps下面已经不存在了,为什么还是报错。

按照网上的方法试了,结果都不行,其中包括:把work/catalina/localhost下的东西都删掉,检查配置文件的无用连接,都不行。

最后,我找到了:conf\Catalina\localhost下有一个bookmanager.xml的文件,就是我报错的那个文件名,所以我确定就是它,删除后重启tomcat就好了,建议大家试一下
### Tomcat 启动时遇到 `java.lang.IllegalArgumentException: Illegal base64 character 2d` 错误解决方案 当遇到 `java.lang.IllegalArgumentException: Illegal base64 character 2d` 错误时,通常意味着程序尝试解码一个不合法的 Base64 字符串。Base64 编码只允许特定字符集中的字符,而 `-` 并不在标准 Base64 字符集中。 #### 可能原因分析 1. **非法输入数据** 输入到 Base64 解码函数的数据包含了非 Base64 的字符,特别是连字符 (`-`) 或下划线 (`_`),这些字符常见于 URL-safe 版本的 Base64 编码[^3]。 2. **配置文件问题** 如果应用程序读取来自外部资源(如配置文件、数据库或网络请求)并试图将其作为 Base64 数据处理,则可能存在编码错误或污染的数据源[^2]。 #### 解决方案建议 ##### 方法一:验证和清理输入字符串 确保传递给 Base64 解码器的字符串确实是有效的 Base64 编码格式: ```java import java.util.Base64; public class Base64Validator { public static boolean isValidBase64(String input) { try { byte[] decodedBytes = Base64.getDecoder().decode(input); String encodedStringAgain = Base64.getEncoder().encodeToString(decodedBytes); return input.equals(encodedStringAgain); } catch (IllegalArgumentException e) { return false; } } public static void main(String[] args) { System.out.println(isValidBase64("SGVsbG8gV29ybGQh")); // true System.out.println(isValidBase64("Hello-World!")); // false } } ``` ##### 方法二:检查日志记录 查看完整的堆栈跟踪信息来定位具体哪一部分代码抛出了异常,并确认该部分逻辑是否正确处理了预期之外的情况[^1]。 ##### 方法三:更新依赖项版本 有时第三方库可能会引入此类型的 bug;因此保持所有使用的库处于最新稳定版也是很重要的措施之一[^4]。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值