我使用AWS SDK将文件上传到S3存储桶时将java classpath设置为" aws-java-sdk-1.10.49.jar",该程序运行正常,但将jar文件替换为a时更高版本" aws-java-sdk-1.11.35.jar",我得到一个异常"未找到如下的AmazonServiceException类。"
线程中的异常" main" java.lang.NoClassDefFoundError:com / amazonaws / AmazonServiceException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 在java.lang.Class.getMethod0(Class.java:3018) 在java.lang.Class.getMethod(Class.java:1784) at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 在sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 引起:java.lang.ClassNotFoundException:com.amazonaws.AmazonServiceException at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331) 在java.lang.ClassLoader.loadClass(ClassLoader.java:357)
任何帮助?
答案 0 :(得分:1)
这里我们有三个可能的问题:
NoClassDefFoundError的一个简单示例是类属于缺少的JAR文件,或者JAR没有被添加到类路径中,或者有时jar的名称已被某人更改,就像在我的情况下我的一位同事改变了tibco .jar进入tibco_v3.jar并且程序失败了java.lang.NoClassDefFoundError,我想知道什么是错的。
该类不在Classpath中,没有确定的知道它的方法,但很多时候你可以看一下打印System.getproperty(" java.classpath")和它将从那里打印类路径,你至少可以了解你的实际运行时类路径。
尝试使用显式的-classpath选项运行您认为可行的类路径,如果它正常工作,那么确定有人覆盖java类路径的短信号。
查看this文章