java.lang.NoClassDefFoundError в спокойных веб-службах трикотажа NetBeans на GlassFish для библиотеки JodaTime - PullRequest
1 голос
/ 12 января 2012

Привет! В настоящее время я использую библиотеку JodaTime в моих спокойных веб-службах NetBeans на сервере GlassFish с использованием библиотек Джексона.

Я получаю java.lang.NoClassDefFoundError для org / joda / time / ReadablePartial, когда пытаюсь создать экземпляр класса, который использует библиотеку JodaTime в одном из файлов ресурсов. Например:

В файле студенческого ресурса:

     Controller c = new Controller();

Где класс Controller импортирует и использует библиотеки JodaTime

Я проверил, что нужные мне библиотеки находятся в проекте. На самом деле, если я запускаю отдельный проект за пределами остальных веб-сервисов, все идет гладко. Есть ли еще одна проблема с classpath, которую я должен решить?

Ответы [ 3 ]

3 голосов
/ 29 ноября 2013

Если кто-то сталкивается с той же проблемой, используя Spring:

Эта проблема возникает, если вы пытаетесь отобразить JSON на объект Java с помощью Jackson либо через аннотацию @RequestBody для параметра контроллера, либо десериализацию вручную с помощьюObjectMapper (). ReadValue (json, Class.class).На локальном компьютере все работает нормально, но при развертывании приложения на десериализацию GlassFish происходит сбой.

Обходной путь Keeg для копирования Joda-Time.jar в glassfish / modules и перезапуск устраняет проблему.

Кажется, на Jira открыта ошибка по этой проблеме: https://java.net/jira/browse/GLASSFISH-20808

0 голосов
/ 15 ноября 2012

На случай, если кто-то еще наткнется на эту проблему, у нас была похожая проблема с комбинацией Glassfish 3.1.1, Джерси и использованием времени Joda. Stacktraces, как это:

Caused by: java.lang.ClassNotFoundException: org.joda.time.ReadableInstant not found by jackson-mapper-asl [128]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)

и т.д.

Обходной путь, который я только что нашел, - это сбросить копию нашего joda-time jar в glassfish / modules. Не совсем красиво, но ...

0 голосов
/ 13 января 2012

Хорошо, я нашел решение.Очевидно, все, что мне нужно было сделать, это переместить файл jar вверх в списке библиотек / файлов jar.Я делаю это на вкладке библиотеки в свойствах проекта.В частности, файл JAR должен быть перемещен над библиотеками REST.

...