tomcat 無法啟動

2021-08-30 16:30:13 字數 4066 閱讀 4473

tomcat 啟動日誌報出以下錯誤:

error: transport error 202: bind failed: address already in use ["transport.c",l41]

error: jdwp transport dt_socket failed to initialize, transport_init(510) ["debuginit.c",l500]

jdwp exit error jvmti_error_internal(113): no transports initializedfatal error in native method: jdwp no transports initialized, jvmtierror=jvmti_error_internal(113)

error: transport error 202: bind failed: address already in use ["transport.c",l41]

error: jdwp transport dt_socket failed to initialize, transport_init(510) ["debuginit.c",l500]

jdwp exit error jvmti_error_internal(113): no transports initializedfatal error in native method: jdwp no transports initialized, jvmtierror=jvmti_error_internal(113)

error: transport error 202: bind failed: address already in use ["transport.c",l41]

error: jdwp transport dt_socket failed to initialize, transport_init(510) ["debuginit.c",l500]

jdwp exit error jvmti_error_internal(113): no transports initializedfatal error in native method: jdwp no transports initialized, jvmtierror=jvmti_error_internal(113)

error: transport error 202: bind failed: address already in use ["transport.c",l41]

error: jdwp transport dt_socket failed to initialize, transport_init(510) ["debuginit.c",l500]

jdwp exit error jvmti_error_internal(113): no transports initializedfatal error in native method: jdwp no transports initialized, jvmtierror=jvmti_error_internal(113)

2010-6-1 11:30:43 org.apache.catalina.core.aprlifecyclelistener init

以上證明有位址被用,我catalina.sh裡加了個遠端debug埠號8787.

解決方法:

1、通知在聯機debug的人關閉聯調。

2、直接關閉伺服器端程序

# lsof -i:8787

command pid user fd type device size node name

nc 20043 efsuser 3u ipv4 1212774 tcp *:8787 (listen)

# kill -9 20043

附:lsof命令詳解:

lsof命令 詳解

lsof:乙個功能強大的命令

lsof命令的原始功能是列出開啟的檔案的程序,但linux下,所有的裝置都是以檔案的行式存在的,所以,lsof的功能很強大!

語法:lsof [-?ahlnnprsv][-c c][+|-d d][+|-d d][-g [s]] [+|-l [i]][-p s][+|-r [t]][-u s][names]

引數說明:若沒有加上任何引數,lsof會列出所有被程式開啟的檔案。

-? -h 這兩個引數意思相同,顯示出lsof的使用說明 -a 引數被視為and,會影響全部的引數

-c c 顯示出以字元或字串c開頭的命令程式開啟的檔案,如$lsof -c init

+d s 在資料夾s下搜尋,此引數不會繼續深入搜尋此資料夾。如顯示在/usr/local下被程式開啟的檔案:$lsof +d /usr/local +d d 同上,但是會以該檔案為基礎往下全部搜尋,這樣花費較大的cpu時 間,請謹慎使用

-d s 此引數以file descriptor(fd)值顯示結果,可以採用範圍(1-3)或個別,如顯示fd為4的程序:$lsof -d 4

-g [s] 以程式的pgid顯示,也可以採用範圍或個別表示,若沒有特別指定,則顯示全部,如顯示pgid為6的程序:$lsof -g 6

-i 用以監聽有關的任何符合的位址,若沒有相關位址被指定,則監聽全部 

語法: lsof -i [46][protocol][@hostname|hostaddr][:serivce|port]

說明: 46  ipv4 or ipv6

protocol tcp or udp

hostname internet host name

hostaddr ipv4位址

service /etc/service中的service name

port 埠號

-l 此引數禁止將user id 轉換為登入的名稱,預設是登入名稱

+|-l [l] +或-表示開啟或關閉顯示檔案連線數,如果只有單純的+l,後面沒有任何數字,則表示顯示全部,如果後面有數字,只有檔案連線數少於該數字的會被列出

-n 不將ip位址轉換為hostname,預設是轉換的

-n 顯示nfs的檔案

-p s 以pid作為顯示的依據

-p 此引數禁止將port number轉換為service name,預設為轉換

+|-r [t] 控制lsof不斷重複執行,t為15秒,也就是說每隔15秒再重複執行 +r 一直執行,直到沒有檔案被顯示 -r 永遠不斷的執行,直到收到中斷訊號(ctrl+ c)

-r 此引數增列出pid的子程式,也就是ppid

-s 列出檔案的大小,若該檔案沒有大小,則留下空白

-u s 列出login name或uid為的程式

-v 顯示lsof的版本資訊

lsof命令的妙用:

當程序開啟了某個檔案時,只要該程序保持開啟該檔案,即使將其刪除,它依然存在於磁碟中。這意味著,程序並不知道檔案已經被刪除,它仍然可以向開啟該檔案時提供給它的檔案描述符進行讀取和寫入。除了該程序之外,這個檔案是不可見的,因為已經刪除了其相應的目錄條目。

在這個示例中,您可以看到 pid 2452 開啟檔案的檔案描述符為 2(標準錯誤)和 7。因此,可以在 /proc/2452/fd/7 中檢視相應的資訊,如清單 1 所示。

清單 1. 通過 /proc 查詢刪除的檔案

# cat /proc/2452/fd/7

[sun apr 30 04:02:48 2006] [notice] digest: generating secret for digest authentication

[sun apr 30 04:02:48 2006] [notice] digest: done

[sun apr 30 04:02:48 2006] [notice] ldap: built with openldap ldap sdk

tomcat無法啟動

今天發現伺服器上tomcat 8080埠起不來,老提示埠已經被占用。使用命令 ps aux grep tomcat 發現並沒有8080埠的tomcat程序。使用命令 netstat apn 檢視所有的程序和埠使用情況。發現下面的程序列表,其中最後一欄是pid program name netstat...

tomcat無法啟動debug

錯誤資訊 1error transport error202 gethostbyname unknown host 2a configuration error occurred during startup.please verify the preference field with the p...

tomcat無法啟動問題

1.windows不能在本地計算機啟動apache tomcat 7 問題是因為jdk的位數和tomcat不同導致的。jdk32位,tomcat也應為32位。命令 在bin目錄下 安裝 service install 解除安裝 servcie uninstall 2.unable to open t...