【问题标题】:java.lang.LinkageError: loader constraint violation ... EquinoxClassLoader / VNativejava.lang.LinkageError: 加载程序约束冲突 ... EquinoxClassLoader / VNative
【发布时间】:2018-04-04 01:33:41
【问题描述】:

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

【问题讨论】:

  • 遇到了同样的问题,但 'eclipse -clean -clearPersistedState' 为我解决了问题。

标签: java osgi eclipse-rcp nebula linkageerror


【解决方案1】:

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

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

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

如果这不是您的问题,请提供有关您的捆绑包的 MANIFEST.MF 文件的更多信息,这些文件与 nebula 相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2014-09-30
    • 1970-01-01
    相关资源
    最近更新 更多