如何知道某個java類從哪個位置載入?

2021-06-20 05:50:47 字數 498 閱讀 7341

1. 如果可以除錯或加入print語句,那麼可以通過class.getprotectiondomain().getcodesource().getlocation() 返回的url得知。

2. 如果不能除錯,可以重啟jvm,那麼可以新增jvm啟動引數 -verbose:class 或 -xx:+traceclassloading,則在啟動時可以打出每個裝載的類的路徑

3. 如果不能重啟,對於sun hotspot 虛擬機器,可以用 com.sun.tools.attach.virtualmachine

.attach 方法返回乙個 

virtualmachine,然後呼叫其loadagent方法,使其呼叫乙個你自己寫的agent jar的agentmain方法,在agentmain方法得到呼叫時,會獲得傳進來的引數

instrumentation,呼叫

instrumentation.getallloadedclasses() 會返回所有已裝載的class, 進而用第一種方法獲得其url

Spring如何判斷某個類用了某個註解

spring提供了乙個annotationutils類用於判斷某個類是否用了某個註解,以 kafkalistener為例,kafkalistener ann annotationutils.findannotation clazz,kafkalistener.class clazz為使用了該註解的類...

linux下如何知道某個埠現在執行什麼監聽程式

當我們用netstat an的時候,我們有時候可以看到類似的輸出 udp 0 0 0.0.0.0 32768 0.0.0.0 但是查詢 etc services又沒有這個埠的相關說明,怎麼辦呢?這個是不是黑客程式?有沒有辦法檢視究竟什麼程式監聽在這個埠?使用lsof i 32768就可以看到 com...

Linux下如何知道什麼程式占用了某個埠

當我們用netstat an的時候,我們有時候可以看到類似的輸出 udp 0 0 0.0.0.0 32768 0.0.0.0 但是查詢 etc services又沒有這個埠的相關說明,有沒有辦法檢視究竟什麼程式監聽在這個埠?使用lsof i 32768就可以看到 command pid user f...