2013-06-13 2 views
0

Ниже приведено поведение, когда я вызываю getSftpUtil(). Я также обеспечить, чтобы все соответствующие банки находятся во внешних библиотеках Maven проекта и доступны в WEB-INF/lib папке проектанет такого метода jsch.JSch.setLogger

код

net.sf.opensftp.SftpUtil util = SftpUtilFactory.getSftpUtil();

StackTrace

SftpUtilFactory: Trying to get SftpUtil class name from the system property net.sf.opensftp.SftpUtil 
SftpUtilFactory - Trying to get SftpUtil class name from the system property net.sf.opensftp.SftpUtil 
SftpUtilFactory: The system property net.sf.opensftp.SftpUtil is not set. 
SftpUtilFactory - The system property net.sf.opensftp.SftpUtil is not set. 
SftpUtilFactory: Use the default one. 
SftpUtilFactory - Use the default one. 

Caused by: java.lang.NoSuchMethodError: com.jcraft.jsch.JSch.setLogger(Lcom/jcraft/jsch/Logger;)V 
at net.sf.opensftp.impl.SftpUtil.<clinit>(SftpUtil.java:110) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at net.sf.opensftp.SftpUtilFactory.getSftpUtil(SftpUtilFactory.java:184) 
+0

() является имя метода для класса инициализации называется первый раз используется класс. Он вызывает статические {} блоки и статическую инициализацию. – NINCOMPOOP

+0

@TheNewIdiot как связано с ошибкой 'jcraft', и как мне ее исправить? – bouncingHippo

ответ

0

Основываясь на JCraft-х change log, setLogger является метод, добавленный к JSch.java в JSch-0.1.30. Таким образом, банка под вашим WEB-INF/lib должна быть более старой версией.

Вы можете запустить

mvn dependency:tree 

, чтобы увидеть, какие из ваших зависимостей использует старую версию, а затем исключить его с чем-то вроде этого:

<dependency> 
    <groupId>...</groupId> 
    <artifactId>...</artifactId> 
    <version>...</version> 
    <exclusions> 
     <exclusion> 
      <groupId>com.jcraft</groupId> 
      <artifactId>jsch</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

Вы, вероятно, есть еще одна зависимость, обратитесь к более поздняя версия jsch, поэтому ваша проблема должна быть решена на этом этапе. Однако, если это не так, то вы можете добавить это в pom.xml:

<dependency> 
    <groupId>com.jcraft</groupId> 
    <artifactId>jsch</artifactId> 
    <version>0.1.50</version> 
</dependency> 
+0

ее странной, так как ни одна из моих зависимостей не использует более старую версию. В настоящее время последнее - '0.1.47'. Более странно то, что этот фрагмент кода отлично работал в последний раз. И когда я сменил рабочую область, эта ошибка возникла. – bouncingHippo

+1

У вас должна быть более старая версия, вот что обычно указывает java.lang.NoSuchMethodError. Это может быть ваш сервер приложений, кеш сервера или что-то еще. У меня недостаточно информации, чтобы помочь вам разобраться. В любом случае, удачи. –

+0

Я нашел его, спасибо !!! – bouncingHippo

0

Ну, я думаю, вам не хватает этой зависимости или правильной версии:

<groupId>com.jcraft</groupId> 
<artifactId>jsch</artifactId> 
<version>0.1.49</version> <!--latest version --> 
+0

У меня это в моем пом, но я все еще получаю ошибку – bouncingHippo

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