NoClassDefFoundError, хотя пакет OSGi есть - PullRequest
5 голосов
/ 20 июля 2011

Я получаю ошибку времени выполнения при попытке запустить приложение grails в Eclipse Equinox.

java.lang.NoClassDefFoundError: org/apache/commons/collections/Transformer

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)

at java.lang.ClassLoader.defineClass(ClassLoader.java:616)

at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)

at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:580)

at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550)

at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481)

at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469)

at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)

at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)

at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)

at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)

at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)

at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)

at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)

at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

Проблема в том, что мой пакет импортирует следующий пакет com.springsource.org.apache.commons.collections; version="3.2.1" При поиске пружины EBR я обнаружил, что в комплект входит требуемый класс.

Я использовал инструмент монитора, чтобы убедиться, что пакет работает.

В чем может быть проблема?

С уважением?

Ответы [ 3 ]

4 голосов
/ 20 июля 2011

Исходя из того, что вы написали, вы импортируете пакет com.springsource.org.apache.commons.collections , но это версия OSGi Spring * org.apache.commons. .collections файл jar. Это пакет, а не пакет.

Ваш пакет должен будет импортировать org.apache.commons.collections , который предоставляется com.springsource.org.apache.commons.collections . Предполагая, что вы уже поставляете пакет Spring в среду выполнения, вам просто нужно исправить оператор импорта.

В существующем манифесте измените (в разделе «Импорт-пакет»):

com.springsource.org.apache.commons.collections;version="3.2.1"

до

org.apache.commons.collections;version="3.2.1"
2 голосов
/ 20 июля 2011

Ваш пакет не может импортировать пакет com.springsource.org.apache.commons.collections, поскольку такого пакета нет.Вероятно, вы имеете в виду, что вы установили комплект с этим именем.

Ошибка означает, что ваш комплект не импортирует пакет org.apache.commons.collections, т.е. он должен появиться где-то в Import-Package выписка из вашей пачки.

0 голосов
/ 20 июля 2011

Добавление файла jar commons-collection в путь сборки решит эту проблему.

...