首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用cloudera- NullPointerException -api时,org.apache.cxf.jaxrs.client.AbstractClient.setupOutInterceptorChain上的管理器

当我使用cloudera- NullPointerException -api时,org.apache.cxf.jaxrs.client.AbstractClient.setupOutInterceptorChain上的管理器
EN

Stack Overflow用户
提问于 2015-07-01 16:36:09
回答 1查看 3.6K关注 0票数 10

我正在通过cloudera-manager-api获取集群。

我使用Maven shade-plugin。

another question relating to null pointer exceptions,但这并不能解决我的特定问题。这看起来像是一个依赖问题,因为如果我在IDE中运行这个应用程序,它工作得很好。

当我运行自打包jar失败时,我会遗漏什么依赖项?

源代码在下面

代码语言:javascript
复制
    String host = HOST_PREFIX + args[0];
    String command = args[1];

    RootResourceV10 apiRoot = new ClouderaManagerClientBuilder()
            .withHost(host).withPort(7180)
            .withUsernamePassword(ADMIN, ADMIN).build().getRootV10();

    if (apiRoot == null) {
        System.exit(0);
    }

    ClustersResourceV10 clusterResource = apiRoot.getClustersResource();


    try {

        if (command.equals(START)) {

            System.out.println("starting..");

            ApiCommand cmd = apiRoot.getClustersResource().startCommand(
                    "cluster"
                    );
            while (cmd.isActive()) {
                cmd = apiRoot.getCommandsResource()
                        .readCommand(cmd.getId());
            }
        } else {
            System.out.println("stopping..");

            ApiCommand cmdstop = apiRoot.getClustersResource().stopCommand(
                    "cluster"
                    );
            while (cmdstop.isActive()) {
                cmdstop = apiRoot.getCommandsResource().readCommand(
                        cmdstop.getId());
            }

        }
    } catch (NullPointerException e) {
        e.printStackTrace();
    }

}

错误消息在下面{

代码语言:javascript
复制
java.lang.NullPointerException
        at org.apache.cxf.jaxrs.client.AbstractClient.setupOutInterceptorChain(AbstractClient.java:850)
        at org.apache.cxf.jaxrs.client.AbstractClient.createMessage(AbstractClient.java:900)
        at org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:522)
        at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:206)
        at com.sun.proxy.$Proxy23.startCommand(Unknown Source)
        at com.worksap.company.cloudera.cluster.manage.ClusterManager.main(ClusterManager.java:48)

pom.xml在下面

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<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>jp.co.ltd</groupId>
    <artifactId>cluster-manager</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <repositories>
        <repository>
            <id>cdh.repo</id>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
            <name>Cloudera Repository</name>
        </repository>
    </repositories>

    <properties>
        <cxf.version>2.7.5</cxf.version>
        <guava.version>14.0</guava.version>
        <jackson2.version>2.1.0</jackson2.version>
        <joda.version>2.1</joda.version>
        <junit.version>4.11</junit.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <test.redirectToFile>true</test.redirectToFile>
        <privateClassPath>com.cloudera.api.shaded</privateClassPath>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.cloudera.api</groupId>
            <artifactId>cloudera-manager-api</artifactId>
            <version>5.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>    
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.8</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <minimizeJar>false</minimizeJar>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.worksap.company.sample.spark.batch.SparkSample</mainClass>
                                </transformer>
                            </transformers>
                            <shadedArtifactAttached>true</shadedArtifactAttached>
                            <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
                            <configuration>
                                <filters>
                                    <filter>
                                        <artifact>*:*</artifact>
                                        <excludes>
                                            <exclude>META-INF/*.SF</exclude>
                                            <exclude>META-INF/*.DSA</exclude>
                                            <exclude>META-INF/*.RSA</exclude>
                                        </excludes>
                                    </filter>
                                </filters>
                                <!-- Additional configuration. -->
                            </configuration>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArguments>
                        <extdirs>lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
EN

回答 1

Stack Overflow用户

发布于 2015-11-14 00:04:33

我遇到了同样的问题,并找到了以下解决方案:

https://cxf.apache.org/docs/bundling-cxf-into-single-jar-with-maven-shade-plugin.html

CXF使用bus-extsions.txt文件来连接模块,它们必须包含在jar中。因此,将此代码添加到您的transformers部分:

代码语言:javascript
复制
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  <resource>META-INF/cxf/bus-extensions.txt</resource>
</transformer>
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31156393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档