2016-09-22 5 views
1

Я использую aws sdk для загрузки файлов в ведро S3, когда задано java classpath для «aws-java-sdk-1.10.49.jar», программа отлично работает, но при замене файла jar на более поздний версия "АМС-ява-СДК-1.11.35.jar", я получаю исключение "класс AmazonServiceException не найден, как показано ниже"Класс AmazonServiceException не найден

исключение в потоке "основного" java.lang.NoClassDefFoundError: ком/amazonaws/AmazonServiceException на Java .lang.Class.getDeclaredMethods0 (Нативный метод) в java.lang.Class.privateGetDeclaredMethods (Class.java:2701) в java.lang.Class.privateGetMethodRecursive (Class.java:3048) в java.lang.Class. getMethod0 (Class.java:3018) в java.lang.Class.getMethod (Class.java:1784) в sun.launcher.LauncherHelper.validateMainClass (LauncherHelper.java:544) в sun.launcher.LauncherHelper.checkAndLoadMain (LauncherHelper.java:526) Вызванный by: java.lang.ClassNotFoundException: com.amazonaws.AmazonServiceException на java.net.URLClassLoader.findClass (URLClassLoader.java:381) на java.lang.ClassLoader.loadClass (ClassLoader.java:424) на sun.misc .Launcher $ AppClassLoader.loadClass (Launcher.java:331) at java.lang.ClassLoader.loadClass (ClassLoader.java:357)

любая помощь?

+0

У вас есть две версии AWS SDK на пути к классам? – jbird

+0

Нет, одна версия выглядит следующим образом: $ JAVA_HOME/bin/java -classpath ./commons-httpclient.jar:${LIBDIR}/ojdbc6-11.2.0.3.jar:./commons-logging.jar:./log4j-1.2 .17.jar: ./ Обще-кодек-1.8.jar: ./ AWS-ява-СДК-1.11.35.jar: ./ AWS-ява-СДК-s3-1.11.35.jar: ./ ДЖЕКСОНА-DataBind -2,5. 3.jar: ./ jackson-core-2.5.3.jar: ./ jackson-annotations-2.5.0.jar: ./ httpclient-4.3.3.jar: ./ httpcore-4.3.2.jar :. /javax.jms-1.1 .jar: /amazon-sqs-java-messaging-lib-1.0.0.jar: ./ commons-io-2.4.jar: ./ javax.json-1.0.4.jar :. /json-simple-1.1.1.jar awss3.testUpload – Telebh

ответ

1

здесь мы имеем три возможные проблемы:

  1. Простой пример NoClassDefFoundError является класс принадлежит отсутствующий файл JAR или JAR не был добавлен в путь к классам, а иногда и имя Jar был изменен кем-то, как в моем случай, когда один из моих коллег изменил tibco.jar на tibco_v3.jar, и программа не работает с java.lang.NoClassDefFoundError, и мне было интересно, что случилось.

  2. Класс не в Classpath, нет уверенного способа узнать его, но много раз вы можете просто взглянуть на печать System.getproperty («java.classpath»), и он будет печатать путь к классу оттуда вы можете по крайней мере получить представление о вашем текущем пути к классам времени выполнения.

  3. Просто попробуйте запустить с явно параметром -classpath с помощью класса, который, по вашему мнению, будет работать, и если он работает, то это верный короткий знак того, что кто-то переопределяет java classpath.

Взгляните на this статью

+1

Спасибо, я только что создал другой проект и добавил все зависимости от Maven и запустил программу, отлично работает, но для этой первой программы все еще жалуются на classNotFound !!!! Я уверен, что я явно указал aws-java-sdk-1.11.23.jar в java CLASSPATH. Программа FYI .. хорошо работает в Eclipse, проблема возникает при запуске в Linux – Telebh

Смежные вопросы