我们的服务器已更新到 java 8,下面的代码不再有效。我正在使用最新版本的 jtopen,但无法使其在 java 7 或 8 中工作。
该代码使用 jtopen(java 工具包)来访问 IBM i 上的集成文件系统。
AS400 as400 = new AS400("myip","myuser","mypassword")
IFSFile file = new IFSFile(as400, params.path);
if (file.exists()){
Ifs ifs = new Ifs()
ifs.CopyFile(as400,params.path,response)
as400.disconnectAllServices();
}
else {
redirect(action: "fileNotFound")
}
我收到以下错误:
java.beans.IntrospectionException: Method not found: setLastModified. Stacktrace follows: java.lang.reflect.InvocationTargetException: null at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_77] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_77] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_77] Caused by: java.lang.Error: java.beans.IntrospectionException: Method not found: setLastModified at com.ibm.as400.access.IFSFileBeanInfo.(IFSFileBeanInfo.java:126) ~[jt400-8.7.jar:JTOpen 8.7] at java.lang.Class.newInstance(Class.java:442) ~[na:1.8.0_77] at com.sun.beans.finder.InstanceFinder.instantiate(InstanceFinder.java:96) ~[na:1.8.0_77] at com.sun.beans.finder.InstanceFinder.find(InstanceFinder.java:66) ~[na:1.8.0_77] at java.beans.Introspector.findExplicitBeanInfo(Introspector.java:448) ~[na:1.8.0_77] at java.beans.Introspector.(Introspector.java:398) ~[na:1.8.0_77] at java.beans.Introspector.getBeanInfo(Introspector.java:173) ~[na:1.8.0_77] at PageController.getBoardReport(PageController.groovy:113) ~[main/:na]
有什么办法可以解决这个问题吗?
最佳答案
看起来 Java bean 基础结构在 1.7 中发生了更改,要求 setter 方法的返回类型为 void(请参阅 Why did PropertyDescriptor behavior change from Java 1.6 to 1.7? )。 setLastModified 方法的返回类型为 boolean,以匹配 java.io.File 中的类似方法。 IFSFileBeanInfo.java 的修复已 checkin JTOpen CVS 存储库。您需要自己构建 JTOpen,向 IBM 服务部门索取包含修复程序的 jt400.jar,或者等待 JTOpen 的下一个版本。
关于ibm-midrange - 自省(introspection)异常 : Method not found: setLastModified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36556722/