java.lang.NoClassDefFoundError:com / amazonaws / auth / AWSCredentials

时间:2014-03-11 16:35:10

标签: java amazon-web-services

我正在运行AWS的Glacier API,这只是一个非常基本的版本 - 试图列出我的保险库。

我按照http://docs.aws.amazon.com/amazonglacier/latest/dev/creating-vaults-sdk-java.html#creating-vaults-sdk-java-example上的示例进行了操作。

我在Linux上从命令行运行。编译好了:

javac -cp sdk/lib/aws-java-sdk-1.7.3.jar -d bin src/AmazonGlacierVaultInfo.java

但是在跑步的时候,我得到了:

java -cp "bin: sdk/lib*" AmazonGlacierVaultInfo

Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials

似乎找不到sdk jar中的SDK类。

虽然我认为我的课程路径正确:

./:/home/name/sites/git/glacier/bin/:/home/name/sites/git/glacier/sdk/:/home/name/sites/git/glacier/src/

我从/ home / name / sites / git / glacier运行并编译,它有bin,src和sdk目录,详见http://docs.aws.amazon.com/amazonglacier/latest/dev/using-aws-sdk-for-java.html#setting-up-and-testing-sdk-java-commandline

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

一些问题

  • 添加正斜杠以解析lib目录
  • 的内容
  • 从类路径中删除空格
  • 周围的报价是不必要的

命令:

java -cp bin:sdk/lib/* AmazonGlacierVaultInfo

答案 1 :(得分:1)

我有同样的错误,但我重试如下

如果您还使用maven,请添加插件:

<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>fully.qualified.MainClass</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

并运行:

mvn clean compile assembly:single

它会将所有必需的包装打包到一个jar中,然后错误就会消失。

答案 2 :(得分:0)

我遇到了同样的问题,它对我有用。

将以下内容添加到pom.xml

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>fully.qualified.MainClass</mainClass>
                </manifest>
            </archive>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
    </plugin>

然后转到目标文件夹以查看jar文件的名称。看起来像这样aws-java-sdk-1.7.3-SNAPSHOT-jar-with-dependencies.jar,然后从目标文件夹中退出并运行

java -cp sdk/lib/name-of-jar-file-found-inside-target-folder -d bin src/AmazonGlacierVaultInfo

jar文件找到的内部目标文件夹的名称看起来像这样aws-java-sdk-1.7.3-SNAPSHOT-jar-with-dependencies.jar