簡體   English   中英

無法使Java應用程序監聽端口以進行遠程調試?

[英]Can't get Java app to listen on port for remote debugging purposes?

我有一個使用Oracle Java 1.8.0Ubuntu 14.x上運行的Spring Boot Java應用程序 ,我想通過IntelliJ進行遠程調試。 我試圖讓它偵聽端口以進行調試,但沒有成功。 請注意,我嘗試的端口都位於端口1024上方 ,以確保這不是權限問題。 我不是root用戶,但是我對這個盒子有sudo訪問權限。

我嘗試將其添加到Java命令行:

-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y

我從本文檔中獲得的一種技術:

http://javahowto.blogspot.com/2010/09/java-agentlibjdwp-for-attaching.html

但是,當我運行此命令時:

sudo netstat -an | grep LISTEN

我沒有看到端口9009。此外,該應用程序不按“ suspend = y”參數指示的那樣等待調試器附加,因為我看到該應用程序初始化消息的流向與應用程序啟動一樣正常。 為什么這不起作用?

這是啟動應用程序的shell腳本。 請注意,此shell腳本是由supervisor啟動的。 我指出這是為了避免引起任何麻煩:

# !/bin/bash 
# Shell script to launch Spring Boot app

# Kill subprocess when parent bash process is terminated by supervisor or when CTRL+C is received
trap 'kill -TERM $PID' TERM INT


java \
  -Dnetworkaddress.cache.ttl=5 \
  -Dnetworkaddress.cache.negative.ttl=5 \
   \
  -jar spbootapp.jar \
  -agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y
  --spring.application.name=spbootapp-awsdev \
  --spring.profiles.active=cluster \
  --spring.cloud.config.enabled=false \
  --endpoints.configprops.enabled=false \
  --endpoints.health.sensitive=false \
  &

調試參數-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y需要放在命令中的-jar之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM