Я хотел бы запустить основной метод класса java с помощью @Grab, чтобы требования выполнялись автоматически. В частности, я хотел бы запустить пример pdfbox https://github.com/apache/pdfbox/blob/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java
Я написал следующий отличный сценарий
#!/usr/bin/env groovy
@Grab('org.apache.pdfbox:pdfbox-examples:2.0.20')
import org.apache.pdfbox.examples.util.RemoveAllText
RemoveAllText.main(args)
Кажется, что @Grab, импорт и выполнение main работают. Но похоже, что основная функция постоянно вспоминает себя, что приводит к ошибке StackOverflowError, как показано ниже.
Caught: java.lang.StackOverflowError
java.lang.StackOverflowError
at RemoveAllText.main(RemoveAllText.groovy)
at RemoveAllText$main.call(Unknown Source)
at RemoveAllText.run(RemoveAllText.groovy:5)
at RemoveAllText.main(RemoveAllText.groovy)
...
Я новичок в groovy, поэтому не уверен, что делаю не так. Возможно ли то, что я пытаюсь сделать? Если возможно, как бы это сделать?
Чтобы сделать пример полностью воспроизводимым, я получаю указанную выше ошибку, когда использую pdf, найденный по адресу https://github.com/mozilla/pdf.js/raw/v2.4.456/examples/learning/helloworld.pdf. и с использованием Groovy версии 2.4.16, установленной по умолчанию репозитории в Ubuntu 18.04. Запуск команды будет
groovy RemoveAllText.groovy helloworld.pdf helloworld_out.pdf
Если я вручную загружаю необходимые файлы jar и запускаю
java -cp pdfbox-2.0.20.jar:commons-logging-1.2.jar:pdfbox-examples-2.0.20.jar org.apache.pdfbox.examples.util.RemoveAllText helloworld.pdf helloworld_out.pdf
работает без проблем.
org.apache.pdfbox.examples.util
, который работает правильно, исходя из того, что я вижу. - person Mauricio Villegas   schedule 04.08.2020RemoveAllText.groovy
на другое, и все должно быть в порядке. Проблема в том, что ваш отличный скрипт создает то же имя класса, что и класс Apache. - person daggett   schedule 04.08.2020