Он содержит папку классов, но нет папки jars? Убедитесь, что пути к банкам относятся к корню проекта.

отаю над набором простых агентов Java, чтобы помочь мне (и, надеюсь, другим) устранить неполадки в приложениях Java. Один из агентов, которому я хотел бы создать инструменты - метод JComponent.getToolTipText (), чтобы быстро идентифицировать любой класс графического интерфейса, просто наведя на него курсор мыши.

Вы можете найти код моего трансформатора и остальной части проекта здесь:

http://sfn.cvs.sourceforge.net/viewvc/sfn/core/src/main/java/org/leplus/sfn/transformer/JComponentTransformer.java?view=markup

Я запускаю свой тестовый графический интерфейс с подключенным агентом следующим образом:

$ java -javaagent:target/jars/sfn-0.1-agent.jar=JComponent -cp lib/jars/bcel-5.2.jar:target/jars/sfn-0.1-test.jar:target/jars/sfn-0.1-agent.jar org.leplus.sfn.test.Main

sfn-0.1-agent.jar содержит класс org.leplus.sfn.transformer.JComponentTransformer. sfn-0.1-test.jar содержит класс org.leplus.sfn.test.Main.

Вот что печатает приложение, когда я запускаю его и налагаю на него мышь:

Loading agent: JComponent
Instrumentation ready!
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/leplus/sfn/tracer/ComponentTracer
 at javax.swing.JComponent.getToolTipText(JComponent.java)
 at javax.swing.ToolTipManager$insideTimerAction.actionPerformed(ToolTipManager.java:662)
...

Что меня удивляет, так это то, что если я изменю свой преобразователь на вызов любого класса из JRE, это сработает. Но это не работает, когда я вызываю свой собственный класс org.leplus.sfn.tracer.ComponentTracer. Моим первым предположением была проблема пути к классам, но ComponentTracer находится и в пути к классам, и в банке агента. Итак, я потерялся.

Если кто-нибудь из вас увидит, где я что-то упускаю.

Ура,

Том

Ответы на вопрос(1)

Ваш ответ на вопрос