2015-09-23 6 views
2

Я пытаюсь использовать метод getconnection для получения DB_URL, который был получен во время установления соединения JDBC. Насколько я понимаю, инструментарий DriverManager отлично работает, потому что инъекционная часть работает нормально, не бросая никаких исключений. Но когда дело доходит до выполнения этой строки, в моем случае вызова государственных статической силы метод класса в пакете, определенный мной, он говоритJDBC DriverManager не может получить доступ к классу в другом пакете

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);"); 

ответ

1

Вы добавили вызов метода к java.sql.DriverManager класса, который загружается классом системы заряжания. Загрузочный загрузчик класса bootstrap не может видеть классы, загружаемые загрузчиком системного класса, родителем которого он является.

Для решения этой проблемы необходимо добавить testInjection.TestClass в загрузчик bootstrap. Вы можете сделать это, установив значение командной строки -Xbootclasspath, ссылающееся на файл jar с этим классом или программным путем, используя экземпляр Instrumentation вашего агента.

 Смежные вопросы

  • Нет связанных вопросов^_^