Исключение FileNotFoundException в exec

#gradle

#gradle

Вопрос:

Эта команда здесь работает, когда я запускаю ее в командной строке из /home/username/workspaces/meditation-new :

 jar -uf server/build/libs/server-*.jar mobile-client/build/BOOT-INF
 

Но запуск его с помощью gradle:

 doFirst {
    exec {
        executable = 'jar'
        args = [
                'uf',
                "server/build/libs/server-*.jar",
                "mobile-client/build/BOOT-INF"
        ]
    }
}
 

Сбой из-за

 java.io.FileNotFoundException: server/build/libs/server-*.jar (No such file or directory)
 

Однако запуск gradle с -i включенным переключателем показывает мне, что команда выполнена правильно:

 Starting process 'command 'jar''. Working directory: /home/username/workspaces/meditation-new Command: jar uf server/build/libs/server-*.jar mobile-client/build/BOOT-INF
Successfully started process 'command 'jar''
java.io.FileNotFoundException: server/build/libs/server-*.jar (No such file or directory)
        at java.base/java.io.FileInputStream.open0(Native Method)
        at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
        at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
        at jdk.jartool/sun.tools.jar.Main.run(Main.java:360)
        at jdk.jartool/sun.tools.jar.Main.main(Main.java:1681)
:copyWebApp (Thread[Execution worker for ':',5,main]) completed. Took 0.079 secs.
 

В чем здесь проблема?

Ответ №1:

В Unix-подобных системах подстановочный * знак расширяется оболочкой, а не запускаемой программой. Либо разверните подстановочный знак самостоятельно, либо выполните команду через оболочку.

Комментарии:

1. Теперь это работает (и я знаю, что я все еще делаю это неправильно). ^^