2

我们的服务器已更新到 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 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] 原因: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] 在 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]

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

4

1 回答 1

2

看起来 Java bean 基础结构在 1.7 中发生了变化,要求 setter 方法的返回类型为 void(请参阅为什么 PropertyDescriptor 行为从 Java 1.6 更改为 1.7?)。setLastModified 方法的返回类型为布尔值,以匹配 java.io.File 中的类似方法。IFSFileBeanInfo.java 的修复已签入 JTOpen CVS 存储库。您将需要自己构建 JTOpen,向 IBM 服务部门索要包含修复程序的 jt400.jar,或者等待 JTOpen 的下一个版本。

于 2016-04-12T16:01:13.437 回答