Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 java.lang.NoClassDefFoundError  [new]
Molasar
Member

Откуда:
Сообщений: 586
Всем привет!

intellij idea ultimate, local tomcat 9.

Сделал свою библиотеку jdeliver-1.0.jar на базе зависимости jSMPP, которая реализует протокол SMPP для отправки СМС.
Зависимость подгружаю в библиотеку через Maven:
<dependency>
     <groupId>org.jsmpp</groupId>
     <artifactId>jsmpp</artifactId>
     <version>2.3.7</version>
</dependency>

Далее создаю SOAP проект, в который подключаю библиотеку jdeliver-1.0.jar через Project structure -> libraries...
SOAP проект замечательно работает, пока я не начинаю обращаться к методам классов jdeliver-1.0.jar, которые дергают методы jSMPP. В этом случае при запуске получаю ошибку:
java.lang.NoClassDefFoundError: org/jsmpp/util/TimeFormatter

TimeFormatter - это класс (interface), который находится в зависимости jSMPP.

Как исправить ошибку?

Лог ошибки:
27-Jan-2019 18:39:49.522 INFO [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[2019-01-27 06:39:49,554] Artifact soap:war: Artifact is deployed successfully
[2019-01-27 06:39:49,554] Artifact soap:war: Deploy took 12 176 milliseconds
2019-01-27 18:39:49.747  INFO 2100 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-01-27 18:39:49.764  INFO 2100 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 16 ms
2019-01-27 18:39:55.100  INFO 2100 --- [nio-8080-exec-7] o.s.w.t.http.MessageDispatcherServlet    : Initializing Servlet 'messageDispatcherServlet'
2019-01-27 18:39:55.125  INFO 2100 --- [nio-8080-exec-7] o.s.ws.soap.saaj.SaajSoapMessageFactory  : Creating SAAJ 1.3 MessageFactory with SOAP 1.1 Protocol
2019-01-27 18:39:55.163  INFO 2100 --- [nio-8080-exec-7] o.s.w.t.http.MessageDispatcherServlet    : Completed initialization in 62 ms
2019-01-27 18:39:55.452 ERROR 2100 --- [nio-8080-exec-7] o.s.b.w.servlet.support.ErrorPageFilter  : Forwarding to error page from request [/ws/messages.wsdl] due to exception [org/jsmpp/util/TimeFormatter]

java.lang.NoClassDefFoundError: org/jsmpp/util/TimeFormatter
	at ru.signalcom.jdeliver.JDeliver.<init>(JDeliver.java:8) ~[jdeliver-1.0.jar:na]
	at com.example.soap.MessageEndpoint.getMessageRequest(MessageEndpoint.java:35) ~[classes/:0.0.1-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_202]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_202]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_202]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_202]
	at org.springframework.ws.server.endpoint.MethodEndpoint.invoke(MethodEndpoint.java:134) ~[spring-ws-core-3.0.6.RELEASE.jar:na]
	at org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter.invokeInternal(DefaultMethodEndpointAdapter.java:291) ~[spring-ws-core-3.0.6.RELEASE.jar:na]
	at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:55) ~[spring-ws-core-3.0.6.RELEASE.jar:na]
	at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:236) ~[spring-ws-core-3.0.6.RELEASE.jar:na]
	at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:176) ~[spring-ws-core-3.0.6.RELEASE.jar:na]
	at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:89) ~[spring-ws-core-3.0.6.RELEASE.jar:na]
	at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:61) ~[spring-ws-core-3.0.6.RELEASE.jar:na]
	at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:293) ~[spring-ws-core-3.0.6.RELEASE.jar:na]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) ~[spring-webmvc-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[servlet-api.jar:na]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) ~[spring-webmvc-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[servlet-api.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-websocket.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) ~[spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130) [spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
	at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66) [spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
	at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105) [spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123) [spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [catalina.jar:9.0.14]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.14]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) [catalina.jar:9.0.14]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.14]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.14]
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) [catalina.jar:9.0.14]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.14]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.14]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-coyote.jar:9.0.14]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.14]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834) [tomcat-coyote.jar:9.0.14]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417) [tomcat-coyote.jar:9.0.14]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.14]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_202]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_202]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.14]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_202]
Caused by: java.lang.ClassNotFoundException: org.jsmpp.util.TimeFormatter
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_202]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_202]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_202]
	... 64 common frames omitted
27 янв 19, 19:02    [21795292]     Ответить | Цитировать Сообщить модератору
 Re: java.lang.NoClassDefFoundError  [new]
mayton
Member

Откуда: loopback
Сообщений: 39933
У тебя ключевое слово jsmpp в логах встречается первый раз там где и падает.
Возможно ты его просто не собрал в артифакт. Распакуй варник и убедись что
он там вообще есть.
27 янв 19, 19:43    [21795304]     Ответить | Цитировать Сообщить модератору
 Re: java.lang.NoClassDefFoundError  [new]
Molasar
Member

Откуда:
Сообщений: 586
jsmpp есть в джарнике.
А где он должен быть в варнике? И зачем?
jsmpp ведь должен подключаться через джарник? Или я не прав?

mayton
У тебя ключевое слово jsmpp в логах встречается первый раз там где и падает.
Возможно ты его просто не собрал в артифакт. Распакуй варник и убедись что
он там вообще есть.
27 янв 19, 20:17    [21795328]     Ответить | Цитировать Сообщить модератору
 Re: java.lang.NoClassDefFoundError  [new]
mayton
Member

Откуда: loopback
Сообщений: 39933
И ты нашел в нем org/jsmpp/util/TimeFormatter.class ?
27 янв 19, 20:24    [21795332]     Ответить | Цитировать Сообщить модератору
 Re: java.lang.NoClassDefFoundError  [new]
Molasar
Member

Откуда:
Сообщений: 586
Это должно быть в джарнике или в варнике?
mayton
И ты нашел в нем org/jsmpp/util/TimeFormatter.class ?
27 янв 19, 20:28    [21795334]     Ответить | Цитировать Сообщить модератору
 Re: java.lang.NoClassDefFoundError  [new]
Molasar
Member

Откуда:
Сообщений: 586
Ни в джарнике, ни в варнике этого нет(((
А как собрать, чтобы добавились все необходимые файлы?
mayton
И ты нашел в нем org/jsmpp/util/TimeFormatter.class ?
27 янв 19, 20:30    [21795335]     Ответить | Цитировать Сообщить модератору
 Re: java.lang.NoClassDefFoundError  [new]
mayton
Member

Откуда: loopback
Сообщений: 39933
Ну вобщем направление я тебе подсказал. Выложи на гитхабик
макет своего проекта. Без бизнесовых фич. Особенно pom.xml
И кто-нибудь поможет.
27 янв 19, 20:36    [21795336]     Ответить | Цитировать Сообщить модератору
 Re: java.lang.NoClassDefFoundError  [new]
Molasar
Member

Откуда:
Сообщений: 586
Я правильно понял, что в Jar файле должны лежать в соответствующих папках все классы, которые используются зависимостью jsmpp?

mayton
Ну вобщем направление я тебе подсказал. Выложи на гитхабик
макет своего проекта. Без бизнесовых фич. Особенно pom.xml
И кто-нибудь поможет.
27 янв 19, 20:41    [21795338]     Ответить | Цитировать Сообщить модератору
 Re: java.lang.NoClassDefFoundError  [new]
springy
Member

Откуда:
Сообщений: 294
Возможно ru.signalcom.jdeliver.JDeliver рассчитан на другую версию org.jsmpp. Надо уточнить у разработчиков.
28 янв 19, 16:37    [21796031]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить