JRubyからJavaメソッドを呼び出そうとしていて、Javaメソッドの引数の1つがjava.util.List
のインスタンスである必要があります。私はこれをJRubyから動作させることはできません。 JRubyでListオブジェクトのインスタンスを作成しようとすると、Listへの割り当て要素のメソッドが[]=
になりません。JRubyからjava.util.Listを操作する
ArrayList
をList
に変換する方法で自分のJavaクラスを作成する必要があると思われますが、私はJava開発者ではありません。このクラスの作成方法はわかりません。
編集:私はあなたがここにダウンロードできる「PDFフォームデザイナー」と呼ばれる古いオープンソースのJavaソフトウェアを使用して、フォーム要素を持つPDFの作成を自動化しようとしています:https://sourceforge.net/projects/pdfformsdesigne/files/pdfformsdesigne/0.8b05/forms_src.zip/download
私がしようとしていますorg.pdf.forms.writer.Writer
クラスで定義されているwrite
メソッドを呼び出します。私は基本的にクラスで定義されたpublishPDF
メソッドのコードを複製しています。
ArrayList
のインスタンスとしてwidgets
引数を設定しました。これはJRubyで扱いやすいです。私はそれをList
に変換する必要があるので、PDFドキュメントを保存するメソッドを呼び出すことができます。ここで
が動作していないJRubyのコードのビットです:
widgets = ArrayList.new()
widgets.add(documentProperties.getPage(1).getWidgets)
widgets.add(documentProperties.getPage(2).getWidgets)
writer.write(file, widgets.to_java(java.util.List), documentProperties.getDocumentProperties()) # throws an error
'List'変数を期待するJavaメソッドに' ArrayList'変数を渡そうとすると、このエラーが発生します: 'TypeError:java.util.ArrayList to [Ljava.util.List;' 。いくつかのコードサンプルを追加するために投稿を編集します。 – Teddy
あなたが持っているように見える問題は、ArrayListをListの配列に変換することです。 Listの配列はArrayListの配列とは異なるオブジェクトであり、型キャストはできません。あなたのwidgets.to_Java(java.util.List)はあなたにリストのオブジェクトを与え、List []は与えません。 List []を返すようにコードを変更すればうまくいくはずです。 – Garun