【问题标题】:JDBC DriverManager can't access class in a different packageJDBC DriverManager 无法访问不同包中的类
【发布时间】:2015-09-23 06:17:28
【问题描述】:

我一直在尝试使用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);");

【问题讨论】:

    标签: java jdbc bytecode javaagents


    【解决方案1】:

    您向系统类加载器加载的java.sql.DriverManager 类添加了一个方法调用。引导类加载器无法看到由它作为父级的系统类加载器加载的任何类。

    要解决此问题,您需要将testInjection.TestClass 添加到引导类加载器。您可以通过设置命令行值 -Xbootclasspath 引用具有此类的 jar 文件或使用代理的 Instrumentation 实例以编程方式来执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-11
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 2011-06-26
      相关资源
      最近更新 更多