gpt4 book ai didi

java - 尝试在 2 个 Eclipse 插件之间传递类实例时抛出 LinkageError

转载 作者:行者123 更新时间:2023-11-29 06:22:09 25 4
gpt4 key购买 nike

我发现很多人都有类似的问题,但没有解决方案...基本上我有两个 eclipse 插件,它们在类路径中都依赖于同一个 jar。

UI 插件回复 Driver 插件(为其实现自定义 ODA 驱动程序和 UI)。两者都依赖于一个包含我的其他一些类的 jar,称为 plugin-dto.jar

当 UI 插件调用 Driver 插件中的一个类的方法时,该方法返回一个对象,该对象的类在 plugin-dto jar 中找到,我得到错误:

java.lang.LinkageError: Class com/test/reporting/NrDsDriverProvider violates loader constraints
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:183)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:576)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:381)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:457)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

有什么办法可以解决这个问题吗?

提前致谢。

最佳答案

问题是在两个不同的插件中加载的类实例是不同的,即使它们来自同一个 jar。 Eclipse 插件类加载器正在做它应该做的事情。假设插件 A 和插件 B 都试图访问类 Z 的同一个实例,这个问题的几个解决方案是:

关于java - 尝试在 2 个 Eclipse 插件之间传递类实例时抛出 LinkageError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com