Удаленная отладка Eclipse не останавливается на моей точке останова - PullRequest
0 голосов
/ 02 октября 2018

Я обычно никогда не публикую вопросы о stackoverflow, потому что я всегда находил ответы, но в этом случае я потратил целую неделю, пытаясь получить затмение для отладки моего удаленного файла WAR, но это невозможно.Мой военный проект - это просто Hello Word с одним файлом BackTest.java

package alxFinancial.dispatcher;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import javax.servlet.*;
import java.io.*;

/**
 * Servlet implementation class BackTest
 */
@WebServlet("/BackTest")
public class BackTest extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public BackTest() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse 
    response) throws ServletException,IOException 
    {
       response.setContentType("text/html");
       PrintWriter pw = response.getWriter();
       pw.println("<html>");
       pw.println("<head><title>Hello World</title></title>");
       pw.println("<body>");
       pw.println("<h1>Hello World</h1>");
       pw.println("</body></html>");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse 
    response) throws ServletException,IOException
    {
       doGet(request, response);
    }

}

Я создал файл ant build.xml для компиляции файла war.Я обязательно включил источник, переменные и строки и debug = "true" в опцию отладчика.

<project name="orderManager" default="war_dispatcher" basedir=".">
<!-- set global properties for this build -->
<property name="build" location="build"/>
<property name="lib" location="build/lib"/>
<property name="jar_path" 
location="/home/alex/Documents/Projects/Finance/Framework/Java/jars"/>
<property name="lib_alxFinancial" location="build/lib/alxFinancial"/>
<property name="lib_dispatcher" location="build/lib/dispatcher"/>
<property name="target" location="build/target"/>
<property name="webxml" location="ressources/dispatcher/webContent/WEB-
INF/web.xml"/>
<property name="web_directory" location="ressources/dispatcher/webContent"/>
<property name="src" location="src"/>
<property name="src_dispatcher" location="src/dispatcher"/>
<property name="src_alxFinancial" location="src/alxFinancial"/>
<property name="main-class" value="orderManager.Test" />
<property name="client-main-class" value="orderManager.Client" />
<property name="server-main-class" value="orderManager.OrderServer" />
<property name="quoteUpdate-main-class" value="quoteUpdate.Test" />
<property name="strategyManager-main-class" 
value="strategyManager.StrategyManagerServer" />

<property name="ressources" value="ressources" />


<path id="dispatcher.classpath">
 <fileset dir="/home/alex/Documents/Projects/Finance/Framework/Java/jars">
    <include name="**/*.jar"/>
 </fileset>
</path>

<target name="init">
    <!-- Create the build directory structure used by compile -->
    <mkdir dir="${build}"/>
    <mkdir dir="${lib}"/>
    <mkdir dir="${lib_alxFinancial}"/>
    <mkdir dir="${lib_dispatcher}"/>
    <mkdir dir="${target}"/>
</target>


<target name="build_dispatcher" depends="init" description="Compile 
dispatcher source">

<javac srcdir="${src_dispatcher}" destdir="${lib_dispatcher}" debug="true" 
    includeantruntime="false" debuglevel="lines,vars,source" source="1.8" 
    target="1.8">
    <classpath refid="dispatcher.classpath"/>
</javac>

</target>

<target name="war_dispatcher" depends="build_dispatcher">
  <war warfile="${target}/Dispatcher.war" webxml="${webxml}">
  <classes dir="${lib_dispatcher}" />

  <fileset dir="${web_directory}">
   <exclude name="WEB-INF/web.xml" />
  </fileset>
</war>
</target>

<target name="copy_dispatcher" depends="war_dispatcher" description="Copy 
dispatcher war to tomcat webapp directory">
   <copy file="${target}/Dispatcher.war" tofile="${tomcat}/Dispatcher.war" 
overwrite="true"/>
</target>

</project>

Мой скрипт ant скомпилирует мой класс, создаст файл war и скопирует его в tomcat / webapp/ folder.

Я также настроил свой catalina.sh так, чтобы он мог принимать удаленную отладку следующим образом.

#
JPDA_OPTS="-
agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y"
#

и, наконец, я настроил удаленное Java-приложение в Eclipse с портом 8000.и хост localhost. Когда я запускаю http://localhost:8080/Dispatcher/BackTest, я вижу, что мое красивое слово Hello появляется, но eclipse не останавливается в точках останова, которые я установил в doGet. Я также попытался использовать jdb в качестве отладчика, думая, что это была проблема затменияно я не вижу код:

alex@XXX:~/alx_git/orderManager$ jdb -attach localhost:8000 -sourcepath 
src/dispatcher/ 
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
Initializing jdb ...
> stop in alxFinancial.dispatcher.BackTest.doGet
Set breakpoint alxFinancial.dispatcher.BackTest.doGet
> 
Breakpoint hit: "thread=http-nio-8080-exec-5", 
alxFinancial.dispatcher.BackTest.doGet(), line=23 bci=0

http-nio-8080-exec-5[1] next 
> 
Step completed: "thread=http-nio-8080-exec-5", 
alxFinancial.dispatcher.BackTest.doGet(), line=24 bci=8

http-nio-8080-exec-5[1] next 
> 
Step completed: "thread=http-nio-8080-exec-5", 
alxFinancial.dispatcher.BackTest.doGet(), line=25 bci=15

Я даю вам, ребята, больше информации о версии ant, javac, java, eclipse и tomcat.

ant Apache Ant(TM) version 1.10.3 compiled on March 24 2018
javac javac 1.8.0_131

java java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)


eclipse Version: Neon.3 Release (4.6.3)
Build id: 20170314-1500

Server version: Apache Tomcat/8.0.24
Server built:   Jul 1 2015 20:19:55 UTC
Server number:  8.0.24.0
OS Name:        Linux
OS Version:     4.15.0-34-generic
Architecture:   amd64
JVM Version:    1.8.0_131-b11
JVM Vendor:     Oracle Corporation

Я действительноизвините за этот вопрос, но я застрял. Я действительно пытался раньше, но я не могу получить затмение для отладки своего кода.

Я сейчас ближе.Если я создаю динамический веб-проект на Java, включу в него свой класс BackTest.java и экспортирую файл войны на мой сервер Tomcat, он работает, я могу остановиться на своей точке останова.Принимая во внимание, что если я использую новый проект Java с существующим файлом сборки ant, я не могу получить eclipse для его отладки.Может быть какая-то недостающая библиотека в файле WAR?Я надеюсь, что вы можете мне помочь.Alex

...