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

时间:2019-06-25 17:08:59

标签: java classloader javassist javaagents bytecode-manipulation

我尝试在某些所需类的每个方法中使用javassist注入方法调用语句。 该语句对应于java-agent jar中的类。例如,如果我的代理具有a.b.HelperClass之类的类,我将注入a.b.HelperClass.call();。在每个使用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内的类? 顺便说一句,我正在通过调用agent-main方法而不是premain 进行检测。

1 个答案:

答案 0 :(得分:0)

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

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