Сегодня я столкнулся с точно такой же проблемой и нашел способ ее решить без необходимости загружать бинарный дистрибутив.
Предполагая, что вы успешно следовали инструкциям в BUILDING.txt, вам нужно только изменить CATALINA_HOME на ${tomcat.source}/output/build и все должно работать просто отлично.
На самом деле, есть файл RUNNING.txt, который специально отмечает:
В качестве альтернативы загрузке бинарного дистрибутива, вы можете создать свой собственный из исходного кода Tomcat, как описано в "BUILDING.txt". Вы можете либо
a) Выполнить полную сборку "release" и найти созданный дистрибутив в каталоге "output/release" и затем продолжить распаковку, как описано выше, или
b) Сделать простую сборку и использовать каталог "output/build" в качестве "CATALINA_HOME". Имейте в виду, что существуют некоторые различия между содержимым каталога "output/build" и полным "release" дистрибутива.
Ошибка "Could not find or load main class..." возникает, когда CATALINA_HOME установлен в ${tomcat.source}, где нет необходимых сгенерированных классов. Они сохраняются в output/classes после сборки.
Выходные данные find
не могут быть надежно обработаны после -, если вы не используете -print0
вместо -print
(-print
, подразумеваемого, когда действие не указано ).
Для публикации -обработайте вывод find -print0
и сохраните пути к файлам в массиве:
С bash4.4+:
readarray -td '' files < <(find /dir/to/check -mtime "$inputNum" -print0)
В более ранних версиях:
files=()
while IFS= read -rd '' file; do
files=("${files[@]}" "$file")
done < <(find /dir/to/check -mtime "$inputNum" -print0)
В более общем плане рекомендуется ознакомиться с рекомендациями на странице:Почему зацикливание вывода find является плохой практикой?
Если вы можете использовать zsh вместо bash, тогда это намного проще. Zsh может сопоставлять файлы на основе их атрибутов с помощью квалификаторов glob .
files=(/dir/to/check/**/*(Dm$inputNum))
**/*
рекурсивный поиск в подкаталогах. Круглые скобки после *
содержат квалификаторы glob:D
для включения точечных файлов и m
для сопоставления файлов на основе времени их модификации в днях, например find -mtime
(, вы также можете выбрать другую единицу и установить ограничение по времени, например. (Dmm-$min)
действует какfind -mmin -$min
).
Zsh предустановлен в macOS. В большинстве других систем unix (, в частности в большинстве дистрибутивов Linux ), он доступен в виде пакета, но не устанавливается по умолчанию.