我正在尝试运行一个读取和写入亚马逊dynamo DB的应用程序。我下载了Eclipse工具包和AWS开发工具包,如果我从本地PC运行该应用程序,则可以正常运行。接下来,我将其导出到jar文件并将其上传到我的EC2实例。但是,当我运行它时,出现错误。

  /home/apps/java/database/bin$ java -jar myJar.jar
Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/auth/AW                                                                  SCredentials
Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentials
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: DynamoDB. Program will exit.


我认为它与类路径有关,但是在/home/ubuntu/.bashrc中,我将其设置为:

CLASSPATH="./:/home/apps/java/database/bin/*:/home/apps/java/database/bin/aws-java-sdk-1.3.12.jar"
export CLASSPATH


/ home / apps / java / database / bin包含AWS开发工具包中的所有.jar文件:


Aspectjrt.jar
Aspectjweaver.jar
aws-java-sdk-1.3.12.jar
aws-java-sdk-1.3.12-javadoc.jar
aws-java-sdk-1.3.12-sources.jar
aws-java-sdk-flow-build-tools-1.3.12.jar
commons-codec-1.3.jar
commons-logging-1.1.1.jar
freemarker-2.3.18.jar
httpclient-4.1.1.jar
httpcore-4.1.jar
杰克逊核心-asl-1.8.7.jar
杰克逊-映射器-asl-1.8.7.jar
mail-1.4.3.jar
myJar.jar
春豆-3.0.7.jar
弹簧上下文-3.0.7.jar
弹簧芯-3.0.7.jar
stax-1.2.0.jar
stax-api-1.0.1.jar


我想念什么?我已经看了一天半了。先感谢您!!

最佳答案

“ / directory / *”的类路径条目可能使事情变得混乱。类路径用冒号分隔,但星号扩展可提供空格。试试这个小shell脚本来启动它。

#!/bin/sh
JAVA_OPTS="-Xms256M -Xmx4G"
CP=`find /home/apps/java/database/bin/*jar -exec echo -n "{}:" \;`
java -cp ${CP%?} -jar yourjar.jar


一些注意事项:


JAVA_OPTS仅用于提醒您可能需要比默认内存更多的内存。
由于“ find”行在最后留了一个冒号,因此最后一行上CP的疯狂语法剥夺了最后一个字符。
如果它不是可执行jar,则可能需要包含jar并启动正确的类。


希望这可以帮助!

08-07 13:41