This is a known problem with how the local file system is being interacted with as is evident by the similar test failures when running the Apache Beam unit tests on Windows: https://issues.apache.org/jira/browse/BEAM-2299
I would suggest trying to use "file:///c:/my/path/to/file.txt" There is a general proposal to change how we work with resource paths: https://issues.apache.org/jira/browse/BEAM-2283 On Sun, May 21, 2017 at 6:03 PM, Shuangyin Ge <[email protected]> wrote: > Hello team, > > Not sure if any can share some lights. I am getting "Unable to find > registrar for c" error while running > > $ mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \ > -Dexec.args="--inputFile=pom.xml --output=counts" -Pdirect-runner > > following the Java Quickstart for Beam https://beam.apache.org/ > get-started/quickstart-java/ > > Complete output is shown below: > > [INFO] Scanning for projects... > [WARNING] > [WARNING] Some problems were encountered while building the effective > model for org.example:word-count-beam:jar:0.1 > [WARNING] 'build.plugins.plugin.version' for > org.apache.maven.plugins:maven-jar-plugin > is missing. @ line 80, column 15 > [WARNING] > [WARNING] It is highly recommended to fix these problems because they > threaten the stability of your build. > [WARNING] > [WARNING] For this reason, future Maven versions might no longer support > building such malformed projects. > [WARNING] > [INFO] > [INFO] ------------------------------------------------------------ > ------------ > [INFO] Building word-count-beam 0.1 > [INFO] ------------------------------------------------------------ > ------------ > [INFO] > [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ > word-count-beam --- > [WARNING] Using platform encoding (Cp1252 actually) to copy filtered > resources, i.e. build is platform dependent! > [INFO] skip non existing resourceDirectory C:\Users\ges\Workspace\word-co > unt-beam\src\main\resources > [INFO] > [INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ > word-count-beam --- > [INFO] Changes detected - recompiling the module! > [WARNING] File encoding has not been set, using platform encoding Cp1252, > i.e. build is platform dependent! > [INFO] Compiling 10 source files to C:\Users\ges\Workspace\word-co > unt-beam\target\classes > [INFO] > [INFO] --- exec-maven-plugin:1.4.0:java (default-cli) @ word-count-beam --- > [WARNING] > java.lang.reflect.InvocationTargetException > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce > ssorImpl.java:62) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe > thodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293) > at java.lang.Thread.run(Thread.java:748) > Caused by: org.apache.beam.sdk.Pipeline$PipelineExecutionException: > java.lang.IllegalStateException: Unable to find registrar for c > at org.apache.beam.runners.direct.DirectRunner$DirectPipelineRe > sult.waitUntilFinish(DirectRunner.java:322) > at org.apache.beam.runners.direct.DirectRunner$DirectPipelineRe > sult.waitUntilFinish(DirectRunner.java:292) > at org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:200) > at org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:63) > at org.apache.beam.sdk.Pipeline.run(Pipeline.java:295) > at org.apache.beam.sdk.Pipeline.run(Pipeline.java:281) > at org.apache.beam.examples.WordCount.main(WordCount.java:184) > ... 6 more > Caused by: java.lang.IllegalStateException: Unable to find registrar for c > at org.apache.beam.sdk.io.FileSystems.getFileSystemInternal(Fil > eSystems.java:447) > at org.apache.beam.sdk.io.FileSystems.match(FileSystems.java:111) > at org.apache.beam.sdk.io.FileSystems.matchResources(FileSystems.java:174) > at org.apache.beam.sdk.io.FileSystems.delete(FileSystems.java:321) > at org.apache.beam.sdk.io.FileBasedSink$Writer.cleanup(FileBase > dSink.java:905) > at org.apache.beam.sdk.io.WriteFiles$WriteShardedBundles.proces > sElement(WriteFiles.java:376) > [INFO] ------------------------------------------------------------ > ------------ > [INFO] BUILD FAILURE > [INFO] ------------------------------------------------------------ > ------------ > [INFO] Total time: 10.279 s > [INFO] Finished at: 2017-05-22T08:56:16+08:00 > [INFO] Final Memory: 32M/450M > [INFO] ------------------------------------------------------------ > ------------ > [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.4.0:java > (default-cli) on project word-count-beam: An exception occured while > executing the Java class. null: InvocationTargetException: > java.lang.IllegalStateException: Unable to find registrar for c -> [Help > 1] > [ERROR] > [ERROR] To see the full stack trace of the errors, re-run Maven with the > -e switch. > [ERROR] Re-run Maven using the -X switch to enable full debug logging. > [ERROR] > [ERROR] For more information about the errors and possible solutions, > please read the following articles: > [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExec > utionException > > Pom.xml is as below > > <?xml version="1.0" encoding="UTF-8"?> > <!-- > Licensed to the Apache Software Foundation (ASF) under one or more > contributor license agreements. See the NOTICE file distributed with > this work for additional information regarding copyright ownership. > The ASF licenses this file to You under the Apache License, Version 2.0 > (the "License"); you may not use this file except in compliance with > the License. You may obtain a copy of the License at > > http://www.apache.org/licenses/LICENSE-2.0 > > Unless required by applicable law or agreed to in writing, software > distributed under the License is distributed on an "AS IS" BASIS, > WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > See the License for the specific language governing permissions and > limitations under the License. > --> > <project xmlns="http://maven.apache.org/POM/4.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > http://maven.apache.org/xsd/maven-4.0.0.xsd"> > <modelVersion>4.0.0</modelVersion> > > <groupId>org.example</groupId> > <artifactId>word-count-beam</artifactId> > <version>0.1</version> > > <packaging>jar</packaging> > > <properties> > <beam.version>2.0.0</beam.version> > <surefire-plugin.version>2.20</surefire-plugin.version> > </properties> > > <repositories> > <repository> > <id>apache.snapshots</id> > <name>Apache Development Snapshot Repository</name> > <url>https://repository.apache.org/content/repositories/snapshots/</url> > <releases> > <enabled>false</enabled> > </releases> > <snapshots> > <enabled>true</enabled> > </snapshots> > </repository> > </repositories> > > <build> > <plugins> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-compiler-plugin</artifactId> > <version>3.5.1</version> > <configuration> > <source>1.7</source> > <target>1.7</target> > </configuration> > </plugin> > > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-surefire-plugin</artifactId> > <version>2.20</version> > <configuration> > <parallel>all</parallel> > <threadCount>4</threadCount> > <redirectTestOutputToFile>true</redirectTestOutputToFile> > </configuration> > <dependencies> > <dependency> > <groupId>org.apache.maven.surefire</groupId> > <artifactId>surefire-junit47</artifactId> > <version>2.20</version> > </dependency> > </dependencies> > </plugin> > > <!-- Ensure that the Maven jar plugin runs before the Maven > shade plugin by listing the plugin higher within the file. --> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-jar-plugin</artifactId> > </plugin> > > <!-- > Configures `mvn package` to produce a bundled jar ("fat jar") for runners > that require this for job submission to a cluster. > --> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-shade-plugin</artifactId> > <version>3.0.0</version> > <executions> > <execution> > <phase>package</phase> > <goals> > <goal>shade</goal> > </goals> > <configuration> > <filters> > <filter> > <artifact>*:*</artifact> > <excludes> > <exclude>META-INF/LICENSE</exclude> > <exclude>META-INF/*.SF</exclude> > <exclude>META-INF/*.DSA</exclude> > <exclude>META-INF/*.RSA</exclude> > </excludes> > </filter> > </filters> > <transformers> > <transformer implementation="org.apache.maven.plugins.shade.resource.Serv > icesResourceTransformer"/> > </transformers> > </configuration> > </execution> > </executions> > </plugin> > </plugins> > > <pluginManagement> > <plugins> > <plugin> > <groupId>org.codehaus.mojo</groupId> > <artifactId>exec-maven-plugin</artifactId> > <version>1.4.0</version> > <configuration> > <cleanupDaemonThreads>false</cleanupDaemonThreads> > </configuration> > </plugin> > </plugins> > </pluginManagement> > </build> > > <profiles> > <profile> > <id>direct-runner</id> > <activation> > <activeByDefault>true</activeByDefault> > </activation> > <!-- Makes the DirectRunner available when running a pipeline. --> > <dependencies> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-runners-direct-java</artifactId> > <version>2.0.0</version> > <scope>runtime</scope> > </dependency> > </dependencies> > </profile> > > <profile> > <id>apex-runner</id> > <!-- Makes the ApexRunner available when running a pipeline. --> > <dependencies> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-runners-apex</artifactId> > <version>${beam.version}</version> > <scope>runtime</scope> > </dependency> > <!-- > Apex depends on httpclient version 4.3.5, project has a transitive > dependency to httpclient 4.0.1 from > google-http-client. Apex dependency version being specified explicitly so > that it gets picked up. This > can be removed when the project no longer has a dependency on a different > httpclient version. > --> > <dependency> > <groupId>org.apache.httpcomponents</groupId> > <artifactId>httpclient</artifactId> > <version>4.3.5</version> > <scope>runtime</scope> > <exclusions> > <exclusion> > <groupId>commons-codec</groupId> > <artifactId>commons-codec</artifactId> > </exclusion> > </exclusions> > </dependency> > </dependencies> > </profile> > > <profile> > <id>dataflow-runner</id> > <!-- Makes the DataflowRunner available when running a pipeline. --> > <dependencies> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-runners-google-cloud-dataflow-java</artifactId> > <version>${beam.version}</version> > <scope>runtime</scope> > </dependency> > </dependencies> > </profile> > > <profile> > <id>flink-runner</id> > <!-- Makes the FlinkRunner available when running a pipeline. --> > <dependencies> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-runners-flink_2.10</artifactId> > <version>${beam.version}</version> > <scope>runtime</scope> > </dependency> > </dependencies> > </profile> > > <profile> > <id>spark-runner</id> > <!-- Makes the SparkRunner available when running a pipeline. Additionally, > overrides some Spark dependencies to Beam-compatible versions. --> > <dependencies> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-runners-spark</artifactId> > <version>${beam.version}</version> > <scope>runtime</scope> > </dependency> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-sdks-java-io-hadoop-file-system</artifactId> > <version>${beam.version}</version> > <scope>runtime</scope> > </dependency> > <dependency> > <groupId>org.apache.spark</groupId> > <artifactId>spark-streaming_2.10</artifactId> > <version>1.6.2</version> > <scope>runtime</scope> > <exclusions> > <exclusion> > <groupId>org.slf4j</groupId> > <artifactId>jul-to-slf4j</artifactId> > </exclusion> > </exclusions> > </dependency> > <dependency> > <groupId>com.fasterxml.jackson.module</groupId> > <artifactId>jackson-module-scala_2.10</artifactId> > <version>2.8.8</version> > <scope>runtime</scope> > </dependency> > </dependencies> > </profile> > </profiles> > > <dependencies> > <!-- Adds a dependency on the Beam SDK. --> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-sdks-java-core</artifactId> > <version>${beam.version}</version> > </dependency> > > <!-- Adds a dependency on the Beam Google Cloud Platform IO module. --> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-sdks-java-io-google-cloud-platform</artifactId> > <version>${beam.version}</version> > </dependency> > > <!-- Dependencies below this line are specific dependencies needed by the > examples code. --> > <dependency> > <groupId>com.google.api-client</groupId> > <artifactId>google-api-client</artifactId> > <version>1.22.0</version> > <exclusions> > <!-- Exclude an old version of guava that is being pulled > in by a transitive dependency of google-api-client --> > <exclusion> > <groupId>com.google.guava</groupId> > <artifactId>guava-jdk5</artifactId> > </exclusion> > </exclusions> > </dependency> > > <dependency> > <groupId>com.google.apis</groupId> > <artifactId>google-api-services-bigquery</artifactId> > <version>v2-rev295-1.22.0</version> > <exclusions> > <!-- Exclude an old version of guava that is being pulled > in by a transitive dependency of google-api-client --> > <exclusion> > <groupId>com.google.guava</groupId> > <artifactId>guava-jdk5</artifactId> > </exclusion> > </exclusions> > </dependency> > > <dependency> > <groupId>com.google.http-client</groupId> > <artifactId>google-http-client</artifactId> > <version>1.22.0</version> > <exclusions> > <!-- Exclude an old version of guava that is being pulled > in by a transitive dependency of google-api-client --> > <exclusion> > <groupId>com.google.guava</groupId> > <artifactId>guava-jdk5</artifactId> > </exclusion> > </exclusions> > </dependency> > > <dependency> > <groupId>com.google.apis</groupId> > <artifactId>google-api-services-pubsub</artifactId> > <version>v1-rev10-1.22.0</version> > <exclusions> > <!-- Exclude an old version of guava that is being pulled > in by a transitive dependency of google-api-client --> > <exclusion> > <groupId>com.google.guava</groupId> > <artifactId>guava-jdk5</artifactId> > </exclusion> > </exclusions> > </dependency> > > <dependency> > <groupId>joda-time</groupId> > <artifactId>joda-time</artifactId> > <version>2.4</version> > </dependency> > > <dependency> > <groupId>com.google.guava</groupId> > <artifactId>guava</artifactId> > <version>20.0</version> > </dependency> > > <!-- Add slf4j API frontend binding with JUL backend --> > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-api</artifactId> > <version>1.7.14</version> > </dependency> > > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-jdk14</artifactId> > <version>1.7.14</version> > <!-- When loaded at runtime this will wire up slf4j to the JUL backend --> > <scope>runtime</scope> > </dependency> > > <!-- Hamcrest and JUnit are required dependencies of PAssert, > which is used in the main code of DebuggingWordCount example. --> > <dependency> > <groupId>org.hamcrest</groupId> > <artifactId>hamcrest-all</artifactId> > <version>1.3</version> > </dependency> > > <dependency> > <groupId>junit</groupId> > <artifactId>junit</artifactId> > <version>4.12</version> > </dependency> > > <!-- The DirectRunner is needed for unit tests. --> > <dependency> > <groupId>org.apache.beam</groupId> > <artifactId>beam-runners-direct-java</artifactId> > <version>${beam.version}</version> > <scope>test</scope> > </dependency> > </dependencies> > </project> > > > > Thanks in advance. >
