Eclipse 我无法在Ubuntu 12.04上为我的Tomcat 6 web应用程序设置远程调试,有人能帮我吗?

Eclipse 我无法在Ubuntu 12.04上为我的Tomcat 6 web应用程序设置远程调试,有人能帮我吗?,eclipse,tomcat6,remote-debugging,iptables,nmap,Eclipse,Tomcat6,Remote Debugging,Iptables,Nmap,我无法在Ubuntu 12.04上为我的Tomcat 6 web应用程序设置远程调试 我尝试了以下相关问题中提供的解决方案: 排名最高的解决方案说我应该打开catalina.sh并将JPDA_OPTS变量更改为: JPDA_OPTS=“-agentlib:jdwp=transport=dt_socket,地址=8000,服务器=y,挂起=n” 然后使用jpda启动tomcat: catalina.sh jpda启动 我在本地主机端口8000检查了我的应用程序,发现“无法连接错误” 下一个最佳解

我无法在Ubuntu 12.04上为我的Tomcat 6 web应用程序设置远程调试

我尝试了以下相关问题中提供的解决方案:

排名最高的解决方案说我应该打开catalina.sh并将JPDA_OPTS变量更改为: JPDA_OPTS=“-agentlib:jdwp=transport=dt_socket,地址=8000,服务器=y,挂起=n”

然后使用jpda启动tomcat: catalina.sh jpda启动

我在本地主机端口8000检查了我的应用程序,发现“无法连接错误”

下一个最佳解决方案是:

在catalina.bat文件中,请修改以下内容

Step 1: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

Step 2: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

Step 3: Run Tomcat from command prompt like below: catalina.sh jpda start
当我检查localhost端口8000时,我得到了相同的“无法连接错误”。 在这两个步骤之后,尝试通过Eclipse连接到tomcat调试器 尝试给了我一个错误:

Failed to connect to remote VM. Connection refused.
Connection refused
这使我认为端口8000可能已关闭,因此我运行了一个nmap命令来显示 “本地主机”上的哪些端口已打开。它返回了以下信息:

ryan@ryan-K53E:~$ nmap -v localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-15 22:12 BST
Initiating Ping Scan at 22:12
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 22:12, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 22:12
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 80/tcp on 127.0.0.1
Discovered open port 3306/tcp on 127.0.0.1
Discovered open port 53/tcp on 127.0.0.1
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 8080/tcp on 127.0.0.1
Discovered open port 631/tcp on 127.0.0.1
Completed Connect Scan at 22:12, 0.02s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00028s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql
8080/tcp open  http-proxy

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
这看起来是为了确认端口8000已关闭,因此我在 “/etc/services”文件,如下所示:

tomcat-debug        8000/tcp        # Remote tomcat debugging
然后尝试使用以下命令使用iptables打开端口8000:

sudo iptables -A INPUT -p tcp --dport tomcat-debug -j ACCEPT
这似乎没有什么不同,因为nmap仍然显示与之相同的开放端口列表
之前非常感谢您的帮助。

在检查是否可以从外部访问端口8000(您使用nmap进行的测试)之前,您是否尝试过检查tomcat是否正在侦听端口8000

我将使用
sudonetstat-pnl | grep8000
获取端口上侦听的所有进程的列表,并筛选该列表中包含8000行的行。 您应该会收到如下内容:

tcp 0 0 127.0.0.1:8000 0.0.0.0:*收听14236/java

这一行表示进程java(pid 14236)正在本地主机(127.0.0.1)端口8000上侦听tcp


如果您想从外部连接到,您应该检查tomcat进程是否正在侦听外部地址。

只是想指出,公开JDWP是一件危险的事情。谢谢你指出这一点。根据我的nmap输出,我不认为端口是打开的,你认为是吗?不,它看起来没有打开,但你打算打开它。只需确保有其他控件(如iptables规则中的源IP限制)防止其他人访问它。我认为调试器也可以在客户机模式下打开(这意味着您有一个调试器监听传入的连接)。为了避免每次都进行完整的Nmap扫描,请使用-p 8000即可,谢谢。我遇到了与OP相同的问题。在我的情况下,端口8000上没有任何侦听内容,我不知道为什么。