IntrospectionException:找不到方法:setLastModified

时间:2016-04-11 18:43:10

标签: ibm-midrange jtopen ibm-ifs

我们的服务器已更新为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:找不到方法:setLastModified。   Stacktrace如下:java.lang.reflect.InvocationTargetException:null           在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]           在java.lang.Thread.run(Thread.java:745)[na:1.8.0_77]   引起:java.lang.Error:java.beans.IntrospectionException:找不到方法:setLastModified           在com.ibm.as400.access.IFSFileBeanInfo。(IFSFileBeanInfo.java:126)   〜[jt400-8.7.jar:JTOpen 8.7]           在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]           在com.sun.beans.finder.InstanceFinder.find(InstanceFinder.java:66)   〜[NA:1.8.0_77]           在java.beans.Introspector.findExplicitBeanInfo(Introspector.java:448)   〜[NA:1.8.0_77]           在java.beans.Introspector。(Introspector.java:398)〜[na:1.8.0_77]           在java.beans.Introspector.getBeanInfo(Introspector.java:173)〜[na:1.8.0_77]           在PageController.getBoardReport(PageController.groovy:113)〜[main /:na]

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

看起来1.7中的Java bean基础结构发生了变化,要求setter方法的返回类型为void(参见Why did PropertyDescriptor behavior change from Java 1.6 to 1.7?)。 setLastModified方法的返回类型为boolean,以匹配java.io.File中的类似方法。已将IFSFileBeanInfo.java的修复程序检入JTOpen CVS存储库。您将需要自己构建JTOpen,向IBM服务部门询问包含该修复程序的jt400.jar,或者等待JTOpen的下一个版本。