java.lang.noclassdeffounderror в Netbeans Jersey Web Services на Glassfish для библиотеки Jodatime
-
27-10-2019 - |
Вопрос
Привет, я в настоящее время использую библиотеку Jodatime в моих веб -сервисах NetBeans Restful на сервере Glassfish с использованием библиотек Jackson.
Я получаю java.lang.noclassdeffounderror для org/joda/time/readable, когда я пытаюсь создать экземпляр класса, который использует библиотеку Jodatime в одном из файлов ресурсов. Например:
В файле StudentResource:
Controller c = new Controller();
Где класс контроллера импортирует и использует библиотеки Jodatime
Я проверил, что библиотеки, которые мне нужны, находятся в проекте. На самом деле, если я запускаю отдельный проект за пределами спокойных веб -сервисов, все работает гладко. Есть ли дополнительная проблема в классе, которую я должен решить?
Решение 3
Хорошо, я нашел решение. Очевидно, что мне нужно было сделать, это переместить файл JAR в списке библиотек/файлов JAR. Я делаю это на вкладке библиотеки в свойствах проекта. Более конкретно, файл JAR должен быть перемещен над библиотеками отдыха.
Другие советы
В случае, если кто -то наткнутся на ту же проблему, используя пружину:
Эта проблема возникает, если вы пытаетесь составить карту JSON с объектом Java, используя Джексон, либо через аннотацию @Requestbody на параметре контроллера, либо вручную дезиализацию с использованием ObjectMapper (). ReadValue (json, class.class). Все отлично работает на локальной машине, но при развертывании применения в дезиализацию Glassfish не удается.
Обходной путь Кига, чтобы скопировать joda-time.jar на стеклянную рыбу/модули и перезагружать проблему.
Похоже, в Джире открыта ошибка в этой проблеме:https://java.net/jira/browse/glassfish-20808
На случай, если кто -то другой наткнулся на эту проблему, у нас была аналогичная проблема с комбинацией стеклянной рыбы 3.1.1, Джерси и использования Joda Time. 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 Time в стеклянную рыбу/модули. Не совсем красиво, но ...