检测 eclipse rcp 应用程序时出现 java.lang.ClassNotFoundException

标签 java classloader javassist javaagents bytecode-manipulation

我尝试在某些所需类的每个方法中使用 javassist 注入(inject)方法调用语句。 该语句对应于 java-agent jar 中的一个类。例如,如果我的代理具有像 a.b.HelperClass 这样的类,我将注入(inject) a.b.HelperClass.call();在每个类(class)的开头使用 javassist。

我尝试使用 Spring Boot Web 应用程序,代理工作正常,但使用 RCP 应用程序时,它会抛出异常

java.lang.ClassNotFoundException:a.b.HelperClass 在 org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) 在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357)

我需要使用 eclipse 类加载器加载驻留在 agent-jar 内的类吗? 顺便说一句,我通过调用代理主方法而不是 premain 来进行检测

最佳答案

Eclipse 基于 OSGi,并具有强制执行的模块系统。

HelperClass 必须位于应使用它的 Eclipse 插件的类路径中。

关于检测 eclipse rcp 应用程序时出现 java.lang.ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56758946/

相关文章:

java - Constructor.newInstance() 不知道参数顺序?

java - 使用带有android的IText创建PDF时获取IOException

java - 无法使用 CollapsedToolBarLayout 中的 NestedScrollView 在 ViewPager 中完全向下滚动

java - 重新加载使用自定义类加载器加载的类

java - 如何在Java中使用泛型摆脱通配符返回类型?

java - iland.hbm.Atom_$$_javassist_21 无法转换为 javassist.util.proxy.Proxy 异常

java - 在 NetBeans 中设置源代码

java - Lambda 表达式用例和与函数式接口(interface)的连接

java - 如何使用 ClassLoader 加载类

objective-c - 从逗号分隔文件加载类的最佳方法