java.lang.noclassdeffounderror:com/amazonaws/auth/awscredentials

ymzxtsji  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(358)

我正在运行用于aws的GlacierAPI,只是一个非常基本的版本—尝试列出我的保险库。
我在学校学过这个例子http://docs.aws.amazon.com/amazonglacier/latest/dev/creating-vaults-sdk-java.html#creating-Vault sdk java示例。
我在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

似乎在sdkjar中找不到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-启动并测试sdkjava命令行
任何帮助都将不胜感激。

syqv5f0l

syqv5f0l1#

我有同样的错误,但我重试如下
如果同时使用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中,然后错误将消失。

w6lpcovy

w6lpcovy2#

我也有同样的问题,这对我很有效。
将以下内容添加到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

eh57zj3b

eh57zj3b3#

一些问题
添加一个正斜杠来解析 lib 目录
从类路径中删除空间
周围的引号是不必要的
命令:

java -cp bin:sdk/lib/* AmazonGlacierVaultInfo

相关问题