我试图将struts版本从2.3.35升级到2.5.17,但是遇到了如下问题:
java.lang.NullPointerException
at com.opensymphony.xwork2.util.fs.StrutsJarURLConnection.getInputStream(StrutsJarURLConnection.java:170)
at com.opensymphony.xwork2.util.fs.JarEntryRevision.needsReloading(JarEntryRevision.java:84)
at com.opensymphony.xwork2.util.fs.DefaultFileManager.fileNeedsReloading(DefaultFileManager.java:65)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:428)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:163)
我一直在使用本指南迁移到strut版本2.5.17:https://cwiki.apache.org/confluence/display/WW/Struts2.3到2.5迁移
我怀疑这是瓷砖的问题。
我已将所有与struts2-ties-plugin相关的jar升级到2.5.17版,包括struts2-ties-plugin。我还将所有与瓷砖相关的jar升级到3.0.7。
我还删除了Xwork核心jar,因为2.5xwork被合并到struts2核心jar。
我做错了什么吗?
请注意:到目前为止,我没有做任何代码更改。该代码与struts版本2.3.35完美兼容。但当我升级了struts版本和tiles版本后,我就开始遇到这个问题。
如果我做错了什么,请有人提出建议好吗?
我通过将struts版本升级到2.5.18解决了这个问题。当我将struts版本降级到2.5.13时,它也工作得很好。
但不建议使用2.5.16至2.3.36(含)之间的strut版本,因此我已将其升级为2.5.18
是的,如果没有代码更改,应该会有错误。
我不认为你做错了什么。
在添加新的.jar并删除旧的.jar之后,只有当代码符合新框架时,它才能工作。
代码更改将是:
<filter>
<filter-name>struts2</filter-name>
<filter-class> org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
您可以完全删除 struts-config.xml并使用注释而不是.xml文件。(自 自 支柱 2.5.17 )
<?xml version="1.0" encoding="ISO-8859-1" ?> <!-- change to UTF-8 -->
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd "> <!-- change to struts-2.5.dtd -->
<struts-config> <!-- change to <struts> -->
<!-- add <include file="struts-default.xml"/> -->
<form-beans>
<form-bean name="MyClassForm" type="forms.MyClassForm">
</form-bean>
</form-beans>
<action-mappings> <!-- change to <package name="hello-default" extends="struts-default"> -->
<action path="/MyClass" name="MyClassForm" type="actions.MyClassAction"
validate="false">
<action name = “MyClass” class = “actions.MyClass”>
<forward name="success" path="/Index.jsp"/>
<result> /Index.jsp </result>
</action>
</action>
</action-mappings> <!-- change to </package> -->
<message-resources parameter="resources"/>
</struts-config> <!-- change to </struts> -->
删除ActionForm.java文件。
属性包含在ActionSupport类中,我们的Action类应该扩展该类。
改变Action.java
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class MyClassAction extends Action // change to ActionSupport {
//fields are now a property of the ActionSupport class
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// change to public String execute() throws Exception {
MyClassForm input = (MyClassForm) form; // don't need this
input.setField1(“Hello”); // change to setMessage(“Hello”);
return mapping.findForward(“success”); // change to return Action.SUCCESS;
此JSP中要执行的操作有:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello!</title>
</head>
<s:form action="submit.action" method="post">
<body>
<s:textfield label="Name" name=" field1" />
<s:property value="field1"/>
<s:submit" />
</body>
</s:form>
</html>
干杯。
版本升级 1.从论坛上下载对应的更新包 第一种:对于宝塔用户 升级之前请先备份好文件及数据库 下载下更新包,需要先在本地解压,然后把所需文件再次压缩,如下图: 文件覆盖完之后,如若有sql语句,则在对应的数据库执行该语句即可。 升级成功。。 第二种:对于服务器用户 升级之前请先备份好文件及数据库 下载下更新包,解压,选择文件覆盖到根目录即可。。 文件覆盖完之后,如若有sql语句,则在对应的数据库执
我使用flutter upgrade--force从v1.91.hotfix 6升级flutter。 然后我构建了一个示例“层” - 颤振运行,它显示了此消息,而如果我切换到1.91,一切都构建正常 找不到名为“堆栈跟踪”的选项。 颤振博士-v G:\新\new_exam [√] Android toolchain -为Android设备开发(Android SDK版本29 . 0 . 2)And
我已将springfox升级到2.7.0版(和2.9.2): 并尝试启动应用程序,我收到下一个错误: 组织。springframework。豆。工厂未满足的依赖异常:创建名为“documentationPluginsBootstrapper”的bean时出错,该bean在URL[jar:file:..jar!/lib/springfox-spring-web-2.7.0.jar!/springfo
我刚刚将我的Android Studio从1.0 RC 2升级到1.0.1。 之后,我被提示将gradle插件从0.14.0更新到1.0.0。 一旦我这么做了,Gradle构建就失败了- 还有其他人面临过类似的问题吗?非常感谢! 我的身材。格拉德尔-
Flask 如同其它软件一样,会随着时间不停地更新自己,其中大部分都会是非常体贴的, 你无需改动一行自身代码就可以应用新版本的 Flask。 不过,每当 Flask 有更新时,我们都建议你适当地修改自己的代码,以充分地利用这些新功能, 提高自己代码地质量。 本章节文档为您列举了 Flask 各版本之间地差异,以及你如何修改自身代码才能无痛地升级。 如果你使用 easy_install 命令更新、安
0.2.X