Я пытаюсь вызвать метод Java из JRuby, и один из аргументов метода Java должен быть экземпляром java.util.List
. Я не могу заставить это работать от JRuby. Когда я пытаюсь создать экземпляр объекта List в JRuby, он не имеет метода []=
для элементов назначения в List.Работа с java.util.List от JRuby
Я думаю, что мне, возможно, придется написать свой собственный Java-класс с помощью метода преобразования ArrayList
в List
, но я не разработчик Java, и я не знаю, как создать этот класс.
редактирует: Я пытаюсь автоматизировать создание PDF с элементами форм с использованием старых открытым исходным кодом Java под названием «PDF Forms Designer», который вы можете скачать здесь: https://sourceforge.net/projects/pdfformsdesigne/files/pdfformsdesigne/0.8b05/forms_src.zip/download
Я пытаюсь вызовите метод write
, определенный в классе org.pdf.forms.writer.Writer
. Я в основном дублирую код в методе publishPDF
, определенном в классе org.pdf.forms.gui.commands.Commands
.
У меня есть аргумент widgets
как пример ArrayList
, с которым легко работать в 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
Когда я пытаюсь передать переменную 'ArrayList' в метод Java, который ожидает переменную' List', я получаю эту ошибку: 'TypeError: не удалось принудить java.util.ArrayList к [Ljava.util.List;' , Я отредактирую свое сообщение, чтобы добавить образцы кода. – Teddy
Проблема, с которой вам кажется, связана с преобразованием ArrayList в массив List. Массив List - это другой объект из массива ArrayList и не может быть напечатан. ваш widgets.to_Java (java.util.List) предоставит вам объект List, а не List []. Измените свой код, чтобы вернуть List [], и он должен работать. – Garun