我一直在尝试使用getconnection方法来获取在JDBC连接建立期间传递的DB_URL。据我所知,DriverManager的检测工作正常,因为注入部分工作正常而不会抛出任何异常。但是当涉及到执行该行时,在我的情况下调用由我定义的包中的类的公共静态void方法,它说
Exception in thread "main" java.lang.NoClassDefFoundError: testInjection/TestClass
at java.sql.DriverManager.getConnection(DriverManager.java:206)
at testInstrumentation.TestConnector.main(TestConnector.java:30)
但同样的注射适用于其他类。很少有人会非常感激。
这就是我在仪器仪表中注入的内容。
method.insertAt(1, true, "testInjection.TestClass.setConnetionURL($1);");
答案 0 :(得分:1)
您添加了对系统类加载器加载的java.sql.DriverManager
类的方法调用。引导类加载器无法看到系统类加载器加载的任何类,它们是父类。
要解决此问题,您需要将testInjection.TestClass
添加到引导类加载器。您可以通过设置引用此类的jar文件的命令行值-Xbootclasspath
或使用代理的Instrumentation
实例以编程方式执行此操作。