Я тестировал свое Java-приложение потока данных в моем IntelliJ, и оно отлично работало. Но при запуске файла jar потока данных в системе Linux возникла такая проблема:

это параметры, которые я использовал для потока данных:
--project=myproject --stagingLocation=gs://mybucket/staging2 --tempLocation=gs://mybucket/gcp-temp2 --gcpTempLocation=gs://mybucket/gcp-temp2 --bigtableProjectId=myinstance --bigtableInstanceId=user-test --bigtableTableId=test_table1
Итак, проблема в том, что каталог gs не распознается должным образом. Фактически, он считается локальным каталогом сервера, на котором я запускал свой jar-файл.
Вот причина, по которой возникает эта проблема с каталогом:
Я искал разницу между [maven assembly jar] и [maven shade jar] и обнаружил, что FileSystemRefistrar указывает не на тот файл.
Но использование плагина тени не является решением проблемы, мне просто повезло, что класс GcsFileSystemRegistrar не был перезаписан. Та же проблема возникает снова, когда я меняю порядок зависимостей.
Чтобы это работало, у меня должны быть обе эти библиотеки в следующем порядке:
beam-runners-google-cloud-dataflow-java
beam-sdks-java-core
"beam-sdks-java-core" включен в "beam-runners-google-cloud-dataflow-java", но мне нужно добавить его после "beam-runners-google-cloud-dataflow-java". Итак, dependencyHierarchy выглядит забавно, но это единственный способ заставить это работать. Вот как это выглядит:
Если я исключу «beam-sdks-java-core» или изменю порядок, проблема возникнет снова. Я попытался исключить его с помощью плагинов maven, но это не сработало.
Итак, мой вопрос: как мне правильно установить FileSystemRegistrar? Я не знаю, почему это так работает.
+ И я надеюсь, что если кто-то, у кого есть эта проблема, сможет получить подсказку из этой статьи. Я много боролся с этим: '(
Прошу вас выложить решение в качестве ответа. Сообществу должно быть легче это увидеть.


Как прокомментировал OGCheeze, это было решено с помощью использования плагина maven shade с ServicesResourceTransformer. В эта почта есть более подробное объяснение.
Я не знаю, как ответить на свой вопрос. Спасибо за ответ