Struts2项目启动报错:Tomcat v8中Struts过滤器初始化失败
这个问题我之前帮不少开发者排查过,核心原因是Struts 2.3.1.1版本过于老旧,和你当前使用的高版本Java(从错误栈里的java.base/sun.nio.fs.WindowsPathParser能判断是Java 9及以上)不兼容,导致Windows系统下的jar路径解析失败。下面给你几个可行的解决办法:
降级Java版本到Java 8
Struts 2.3.x系列是针对Java 6/7/8设计的,Java 9及以后的NIO路径处理逻辑发生了变化,老版本Struts的类加载器无法正确解析Windows下的jar:file:\格式路径。你需要在Eclipse中给项目指定Java 8的JRE,同时确保Tomcat 8也使用Java 8运行(Tomcat 8.5及以下版本推荐搭配Java 8)。升级Struts 2到兼容高版本Java的稳定版
如果不想降级Java,建议把Struts 2升级到2.5.x或更高的稳定版本(比如2.5.30),这些版本已经修复了Java 9+的路径兼容问题。注意升级时要同步更新所有相关的Struts依赖jar包(比如struts2-core、xwork-core、ognl等),避免版本冲突导致新的问题。清理Eclipse服务器临时目录
错误里的路径是Eclipse生成的临时服务器目录,偶尔这个目录会出现权限或路径生成异常。你可以在Eclipse的Servers视图中,右键点击Tomcat服务器,依次选择Clean...和Clean Tomcat Work Directory...,之后重启服务器尝试解决。
附你遇到的错误信息:
SEVERE: Exception starting filter struts java.nio.file.InvalidPathException: Illegal char <:> at index 3: jar:file:\C:\Users\RITESH\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\StrutsLoginDemoApp\WEB-INF\lib\struts2-core-2.3.1.1.jar at java.base/sun.nio.fs.WindowsPathParser.normalize(Unknown Source)
内容的提问来源于stack exchange,提问作者demodemo




