多模块项目触发数据流管道时出错:无法将url(jar:file:/home/java/app.war!/ WEB-INF / classes!/)转换为文件

时间:2019-01-02 11:56:48

标签: spring-boot google-cloud-dataflow apache-beam

尝试使用Spring Boot War / Swagger执行Dataflow管道时出错:

Caused by: java.lang.IllegalArgumentException: Unable to convert url (jar:file:/home/java/app.war!/WEB-INF/classes!/) to file.
at org.apache.beam.runners.core.construction.PipelineResources.detectClassPathResourcesToStage(PipelineResources.java:55)
at org.apache.beam.runners.dataflow.DataflowRunner.fromOptions(DataflowRunner.java:266)
... 78 more
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.<init>(File.java:418)
at org.apache.beam.runners.core.construction.PipelineResources.detectClassPathResourcesToStage(PipelineResources.java:52)
... 79 more

尝试为数据流设置Runner并将依赖项引入项目时,似乎失败了:

options.setRunner(DataflowRunner.class);

我已经尝试包括用于数据流的自包含jar的插件:

    <build>
     <!--Self contained jar compilation for dataflow : https://beam.apache.org/documentation/runners/dataflow/-->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.1</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>MAIN-CLASS-HERE</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

我发现了一个类似的线程,但是没有明确的问题解决方法:IllegalArgumentException: Unable to convert url (jar:file:/app.jar!/BOOT-INF/classes!/) to file

1 个答案:

答案 0 :(得分:0)

不要绕过org.apache.beam.runners.core.construction.PipelineResources.detectClassPathResourcesToStage用options.setFilesToStage设置资源。