【学习笔记】struts2项目部署出错解决思路,非程序错误
Type Exception Report
Message Illegal char <:> at index 3: jar:file:\D:\jee-oxygen\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\UpDownloadFile_Struts2\WEB-INF\lib\struts2-core-2.3.34.jar
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
java.nio.file.InvalidPathException: Illegal char <:> at index 3: jar:file:\D:\jee-oxygen\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\UpDownloadFile_Struts2\WEB-INF\lib\struts2-core-2.3.34.jar java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182) java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153) java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77) java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92) java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:229) java.base/java.io.File.toPath(File.java:2300) java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:951) java.base/java.util.zip.ZipFile.<init>(ZipFile.java:216) java.base/java.util.zip.ZipFile.<init>(ZipFile.java:148) java.base/java.util.jar.JarFile.<init>(JarFile.java:324) java.base/java.util.jar.JarFile.<init>(JarFile.java:295) java.base/java.util.jar.JarFile.<init>(JarFile.java:234) com.opensymphony.xwork2.util.fs.JarEntryRevision.needsReloading(JarEntryRevision.java:76) com.opensymphony.xwork2.util.fs.DefaultFileManager.fileNeedsReloading(DefaultFileManager.java:66) com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:397) org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:169) com.opensymphony.xwork2.config.ConfigurationManager.needReloadContainerProviders(ConfigurationManager.java:215) com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:179) com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:73) org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:978) org.apache.struts2.dispatcher.ng.PrepareOperations.createActionContext(PrepareOperations.java:81) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:89)
环境 jre1.9 ,Tomcat9.0 ,struts2.3
一.检查是不是struts包冲突,或者配置有问题
解决办法:官网下载struts-2.3.34-all.zip,解压
打开里面的【struts-2.3.34】-->【apps】-->【struts2-blank.war】-->【WEB-INF】-->【lib】, 复制粘贴到项目的【WebContent】-->【lib】下 (先清空原先的jar包,buildPath里面的引用也要删除),然后在add to buildPath;
复制空项目里面的“web.xml”到本项目的【WEB-INF】下,删除掉不必要的内容,只保留filter
复制空项目中的“struts.xml”到本项目中src下,修改删除掉不必要的内容
二.删除Tomcat和eclipse中的缓存
解决方法:
1.先remove掉所有发布的项目,然后清除所有Tomcat的缓存,先执行clean,再执行clean Tomcat work directory
2.清除的eclipse缓存,【Project】-->【clean...】
三.如果以上不行,还有一种可能,jre版本不匹配,修改项目的jre版本,jre1.9修改为jdk1.8
---------------------------------------------我是分割线----------------------------------------------------
坑爹啊,后来我再一次遇到这个问题,然后问度娘居然搜到自己的答案-_-||,还TM是第一条。。。。
画重点:方法三亲测有效,前面2个都没用的。
具体方法如下:window -> preferences -> java -> Installed JREs -> 选择jdk8或别的版本(没有自己安装) -> Apply -> Apply and Close