2013-10-25 4 views
1

Я пытаюсь запустить Tomcat 7 и получить следующее сообщение об ошибке:java.lang.NoSuchMethodError

java.lang.NoSuchMethodError: com.sun.xml.ws.assembler.TubelineAssemblyController: method <init>()V not found 

Согласно этому сообщению (http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/)

  1. gmbal-апи-only.jar
  2. га -api.jar
  3. JAXB-core.jar
  4. JAXB-impl.jar
  5. JAXWS-api.jar
  6. JAXWS-rt.jar
  7. управление-api.jar
  8. policy.jar
  9. StAX-ex.jar
  10. streambuffer.jar

Я добавил эти банки в библиотеки Tomcat (C: \ Program Files \ Apache Software Foundation \ apache-tomcat-7.0.37 \ lib), в библиотеки моего проекта и даже в JDK: C: \ Program Files \ Java \ jdk1.7.0_15 \ lib , до сих пор ничего хорошего.

Самое смешное, что в моем проекте ничего нет, что использует класс com.sun.xml.ws.assembler.TubelineAssemblyController. Кто-нибудь есть идеи? Заранее спасибо.

ответ

5
java.lang.NoSuchMethodError 

Обычно случается, когда у вас неправильная версия jar в classpath.

Например, во время разработки вы использовали stax-ex1.2.jar, но у вас есть stax-ex.jar. Убедитесь, что у вас есть одинаковая версия jar, доступная в classpath для времени компиляции и времени выполнения.

+0

Я понимаю, но банки, которые я добавляю, являются последней версией: jaxws-ri-2.2.8, и я использую эти банки одинаково в обоих местах, о которых вы упомянули ... – lamostreta

+0

«Неверная версия» - -> Не означает, что нам нужно получить последние. 1) банки могут быть старыми в контексте вашего кода (в этом случае вам нужно получить последние) 2) банки могут быть новыми в контексте вашего кода (в этом случае вам нужно понизить). – kosa

+0

Извините, я смутился с ответом Саджала Дутты. Он упомянул о загрузке последней версии. – lamostreta

1

«Самое смешное, что в моем проекте ничего нет, что использует класс com.sun.xml.ws.assembler.TubelineAssemblyController».

Но один из источников ваших банок ищет его. Возможно, у вас неправильная версия jar-файла. Попробуйте перезагрузить последнюю версию.

+0

Банки, которые я использовал, относятся к последней версии: jaxws-ri -2.2.8 – lamostreta

+0

@lamostreta Проверьте, есть ли у вас jar этот класс: com.sun.xml.ws.assembler.TubelineAssemblyController. Если нет, загрузите правильный, который есть. –

0

У меня такая же проблема с Apache Commons и Tomcat 7. У меня есть новая версия в моей папке lib, а tomcat имеет другую версию int в папке commmons lib.

Tomcat загружает сначала библиотеки своей папки, а затем WEB/lib моего webapp. Я получил то же исключение, что и вы, как только метод, который я использую, имеет только новую версию.

Попробуйте локализовать различные версии lib в вашем пути к классам.

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