Исходный код не найден во время веб-приложения Spring Debugging на основе tomcat
У меня есть веб-приложение на базе Spring, работающее на Tomcat, которое я хочу отлаживать в Eclipse. Мне удалось запустить Tomcat в режиме отладки (JPDA). Но я столкнулся с ошибкой Источник не найден.
Я видел подобные вопросы, заданные ранее, но я не мог найти точный ответ.
Трассировка стека, где встречается источник не найден
Daemon Thread [http-8080-3] (Suspended)
Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Object, Method, Object[], MethodProxy) line: 602
SpringTestService$$EnhancerByCGLIB$$2f23d34d.update(SpringTestVO) line: not available
SpringTestManager.update(SpringTestForm) line: 65
SpringTestAction.doExecute(ActionMapping, ActionForm) line: 65
SpringTestAction(BaseAction).execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) line: 196
DelegatingActionProxy.execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) line: 106
TilesRequestProcessor(RequestProcessor).processActionPerform(HttpServletRequest, HttpServletResponse, Action, ActionForm, ActionMapping) line: 419
TilesRequestProcessor(RequestProcessor).process(HttpServletRequest, HttpServletResponse) line: 224
ActionServlet.process(HttpServletRequest, HttpServletResponse) line: 1196
ActionServlet.doPost(HttpServletRequest, HttpServletResponse) line: 432
ActionServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 637
ActionServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 717
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 290
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
StandardWrapperValve.invoke(Request, Response) line: 233
StandardContextValve.invoke(Request, Response) line: 191
StandardHostValve.invoke(Request, Response) line: 127
ErrorReportValve.invoke(Request, Response) line: 103
StandardEngineValve.invoke(Request, Response) line: 109
CoyoteAdapter.service(Request, Response) line: 293
Http11Processor.process(Socket) line: 861
Http11Protocol$Http11ConnectionHandler.process(Socket) line: 606
JIoEndpoint$Worker.run() line: 489
Thread.run() line: 662
Классы SpringTestService
, SpringTestManager
, SpringTestAction
, SpringTestForm
а также SpringTestVO
написаны мной.
Невозможно найти источник для Cglib2AopProxy$DynamicAdvisedInterceptor
, который находится в библиотеке Spring.
Я добавил необходимые библиотеки и JAR-файлы и проекты в папку "Source" при создании отладочных конфигураций.
3 ответа
Ваш SpringTestService реализует какой-либо интерфейс? Если нет, Spring попытается использовать cglib для создания прокси и autowire. Для этого вашему приложению требуется зависимость cglib ( http://mvnrepository.com/artifact/cglib/cglib). Можешь попробовать? Или, если ваш сервис и дао не реализуют какой-либо интерфейс, то в общем случае неплохо бы иметь интерфейс, даже если у вас есть только одна реализация.
Я знаю его прошлое долгое время, но эта проблема вызвана котом. вам придется остановить свой сервер Tomcat, дважды щелкните по нему. 1. щелкните по открытой конфигурации запуска 2. перейдите на вкладку classpath 3. щелкните по добавлению External Jars 4. Выберите commons-daemon.jar и tomcat-juli.jar из папки tomcatdirectory\bin 5. снова запустите его в режиме отладки, и вы выиграли ' не вижу ошибки...
Строки в вашей трассировке стека, у которых нет источника, на самом деле не имеют источника.
Они генерируются из необработанного байт-кода, которым манипулирует cglib - по-видимому, для реализации улучшения AspectJ в вашем коде.
Это один из недостатков того, что библиотеки магически преобразуют ваш код за вашей спиной.