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。スタックトレースは次のとおりです: java.lang.reflect.InvocationTargetException: java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) で null 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] 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] 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] ] 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 で変更され、セッター メソッドの戻り値の型が void であることが要求されたようです (「PropertyDescriptor の動作が Java 1.6 から 1.7 に変更された理由」を参照)。setLastModified メソッドには、java.io.File の同様のメソッドと一致するブール型の戻り値があります。IFSFileBeanInfo.java の修正が JTOpen CVS リポジトリにチェックインされました。JTOpen を自分でビルドするか、修正を含む jt400.jar を IBM サービスに依頼するか、JTOpen の次のリリースを待つ必要があります。

于 2016-04-12T16:01:13.437 に答える