0

运行 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)
4

1 回答 1

2

导入同一个类的多个包应该不是问题。出口是这里的问题。

该错误意味着有超过 1 个提供(导出)类的包org.eclipse.nebula.cwt.v.VNative

例如,如果您有多个依赖于 nebula 包的包并且两个包都重新导出它,则可能会发生这种情况。--> 两个包都提供相同的类。在这种情况下,您可以例如将依赖项修改为 nebula 以不重新导出它。

如果这不是您的问题,请提供有关您的捆绑包的MANIFEST.MF文件的更多信息,这些文件对 nebula 执行某些操作。

于 2018-02-07T13:15:30.943 回答