我正在运行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
非常感谢任何帮助。
答案 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