3

Я пытаюсь создать простую программу Java Agent, прежде чем я реализую реальную вещь. Я не могу заставить его работать. Очевидно, что у меня есть какая-то проблема с конфигурацией или классом. Никакое количество взглядов и попыток не привело к моей проблеме.Не удается запустить javaagent без ошибок

Если я бегу:

java -cp ./demoAgent.jar -javaagent:./demoAgent.jar com.kingtigerbooks.demoMod.Main

Я получаю следующее сообщение об ошибке:

Exception in thread "main" java.lang.ClassNotFoundException: com.kingtigerbooks.demoAgent.Agent 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:280) 
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338) 
FATAL ERROR in native method: processing of -javaagent failed 
Abort trap 

Я бегу это на моем Mac. Файл jar с агентом находится в текущем каталоге. Манифест для файла фляги выглядит следующим образом:

Manifest-Version: 1.0 
Premain-class: com.kingtigerbooks.demoAgent.Agent 
Can-Redefine-Classes: true 

Если Пахнет проблемы путей класса, но, как вы можете видеть, я включил банку на пути к классам. Любая помощь будет оценена по достоинству. Это очень простой проект.

+0

Здесь что-то явно нечетное. Я делал более или менее то же самое на Ubuntu, и это сработало. Я не понимаю, что другое. В идеале, что бы я хотел, это советы о том, как отладить этот тип проблемы. – DungeonTiger

+0

Я получил эту ошибку, компиляция моего проекта с помощью jdk1.8, когда я должен был использовать 1.7 .... – djangofan

ответ

2

при запуске агента вы делаете не добавьте банку агента в нормальный путь к классам.

В качестве дополнительной заметки вы можете добавить -verbose:class в командную строку, чтобы получить информацию о процессе загрузки класса.

+0

К сожалению, это привело к той же ошибке. Командная строка была java -javaagent: ./ demoAgent.jar com.kingtigerbooks.demoMod.Main – DungeonTiger

+0

@ DungeonTiger - у вас есть основной класс в вашем пути к классам? – jtahlborn

+0

Hummm .... Я бы сказал, да, так как если я удалю параметр -javaagent, он будет работать, и я получу свой прекрасный тип Hello World. Yeh. Итак, это говорит мне, что эта часть верна. Кроме того, он не жалуется на главный класс, который жалуется на класс агента, который находится в банке, demoAgent.jar. – DungeonTiger

4

Проблема решена. У меня был файл с плохими баночками. Файл агента jar не содержал класс агента. Создав правильный файл jar и поместив полный путь в банку в параметре javaagent, все это работает.

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

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