java.lang.LinkageError: нарушение ограничения загрузчика EquinoxClassLoader/VNative

Я получаю следующее исключение при запуске моего приложения Eclipse RCP. Кто-нибудь уже встречал такую ​​ошибку?

Я думаю, что это может произойти из-за того, что несколько плагинов импортируют класс VNative, возможно ли это?

java.lang.LinkageError: loader constraint violation: loader (instance of org/eclipse/osgi/internal/loader/EquinoxClassLoader) previously initiated loading for a different type with name "org/eclipse/nebula/cwt/v/VNative"
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.defineClass(ModuleClassLoader.java:276)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:655)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:578)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:538)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:525)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:328)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:368)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:446)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.nebula.widgets.cdatetime.CDateTime.removeTextListener(CDateTime.java:1429)
    at org.eclipse.nebula.widgets.cdatetime.CDateTime.addTextListener(CDateTime.java:391)
    at org.eclipse.nebula.widgets.cdatetime.CDateTime.init(CDateTime.java:1339)
    at org.eclipse.nebula.widgets.cdatetime.CDateTime.<init>(CDateTime.java:346)

person begarco    schedule 23.10.2017    source источник


Ответы (1)


Несколько пакетов, импортирующих один и тот же класс, не должны быть проблемой. Экспорт здесь проблема.

Ошибка означает, что существует более 1 пакета, который предоставляет (экспортирует) класс org.eclipse.nebula.cwt.v.VNative.

Например, это может произойти, если у вас есть несколько пакетов с зависимостью от пакета nebula, и оба пакета реэкспортируют его. --> Оба пакета предоставляют одни и те же классы. В этом случае вы можете, например, изменить зависимости от туманности, чтобы не экспортировать их повторно.

Если это не ваша проблема, предоставьте дополнительную информацию о файлах MANIFEST.MF ваших пакетов, которые что-то делают с nebula.

person Marteng    schedule 07.02.2018