Maven pig-0.9.0.pom不包含其所有运行时依赖项,如pig-0.8.1-cdh3u1.pom

Maven pig-0.9.0.pom不包含其所有运行时依赖项,如pig-0.8.1-cdh3u1.pom,maven,apache-pig,Maven,Apache Pig,maven noob,耐心点。。。 我正在从cdh3u1升级到apache hadoop 0.20.203.0和pig 0.9.0。我曾经有: <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-core</artifactId> <version>0.20.2-cdh3u1</

maven noob,耐心点。。。 我正在从cdh3u1升级到apache hadoop 0.20.203.0和pig 0.9.0。我曾经有:

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>0.20.2-cdh3u1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.pig</groupId>
        <artifactId>pig</artifactId>
        <version>0.8.1-cdh3u1</version>
    </dependency>

org.apache.hadoop
hadoop内核
0.20.2-cdh3u1
org.apache.pig
猪
0.8.1-cdh3u1
在eclipse内部使用junit运行配置运行它们非常有效。 现在我有:

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>0.20.203.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.pig</groupId>
        <artifactId>pig</artifactId>
        <version>0.9.0</version>
    </dependency>

org.apache.hadoop
hadoop内核
0.20.203.0
org.apache.pig
猪
0.9.0
我在运行时没有发现ClassDefFoundError:jline/ConsoleReaderInputStream。 最后,我手动添加了所有这些依赖项,直到成功:

    <dependency>
        <groupId>jline</groupId>
        <artifactId>jline</artifactId>
        <version>0.9.94</version>
    </dependency>   
    <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr-runtime</artifactId>
        <version> 3.2 </version> <- this is 3.0.1 in cdh3u1, but probably changed in pig 0.9.0
    </dependency>      
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>r06</version>
    </dependency>

杰琳
杰琳
0.9.94
org.antlr
antlr运行时

3.2Maven有一个名为的特性,因此您不必指定您自己的依赖项所需的库


ConsoleReaderInputStream位于Jline JAR中。当您使用Pig.0.8.1-cdh3u1时,您不必添加Jline依赖项,因为它是在中声明的。不再声明Jline依赖项,这就是您必须自己添加它的原因。至于从Pig中删除JLine的原因,您必须询问该项目的开发人员。

已检查,这正是您描述的。我已经根据我在pig-0.8.1-cdh3u1.pomjline版本不兼容清单中发现的内容,更新了答案中列出的版本号,错误消息为:
error 2998:未处理的内部错误。jline.consolereReader.setDefaultPrompt(Ljava/lang/String;)V java.lang.NoSuchMethodError:jline.consolereReader.setDefaultPrompt(Ljava/lang/String;)V
antlr版本不兼容在此错误消息中显示:
error 1200:此流中不能向后查看多个令牌