簡體   English   中英

設置要用於applet啟動的默認JVM參數

[英]Set default JVM parameters to be used for applet launch

我正在嘗試遠程調試Java applet,但我似乎無法使-agentlib:jdwp JVM參數起作用。 我已經嘗試在Java控制面板中為所使用的特定JRE指定它,並且我嘗試通過用於啟動applet的JNLP文件來設置它。

為applet啟動設置JVM參數的正確方法是什么? 特別是遠程調試。

看一個類似的SO問題 ,我找到了以下答案......

有時調試一些與安全相關的東西,瀏覽器插件環境與appletviewer太不一樣了。 以下是在瀏覽器中有效調試applet的方法:

1)獲取二進制文件的調試信息

從JRE_HOME / lib備份.jar文件

(下載並)安裝與JRE相同版本的JDK。

將.jar文件從JDK_HOME / jre / lib復制到JRE_HOME / lib

JDK中的文件是使用包含的調試信息(源代碼行號信息,變量名等)編譯的,並且JRE文件沒有此信息。

如果沒有這個,你將無法在調試器中有意義地進入核心類代碼。

2)啟用Java Plug-in的調試

轉到Java控制面板/ Java / Java運行時設置/視圖/用戶/運行時參數

並添加選項以啟用調試。 像這樣的東西:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n

有趣的選項是端口(在這里使用2502,幾乎可以使用任何空閑端口,只需將其寫下來以供日后使用)和暫停 - 如果需要調試applet啟動,類加載等,請將其設置為“y” 。 這樣,當您訪問applet頁面時,瀏覽器似乎會凍結,因為JVM會立即暫停,等待調試器連接。

3)使用您喜歡的IDE遠程調試Java插件

例如,在Eclipse中,選擇Run / Debug Configurations ... / Remote Java Application

單擊“新建”按鈕。

確保連接類型為“Socket Attach”,如果您的瀏覽器是本地的,則選擇localhost作為主機,並選擇之前選擇的端口(示例中為2502)。

您可能必須在源選項卡上的JDK中包含src.zip以使Java核心類源可用。

保存配置,一旦瀏覽器運行插件(JVM掛起或未掛起),運行遠程調試器以連接到插件JVM,並打開包含applet源的項目。

此問題已針對7_u40修復,可在java.net上進行早期訪問。 否則Oracle錯誤說這是針對Java 8修復的!

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016005

http://jdk7.java.net/download.html

你絕對需要在瀏覽器中運行applet嗎? 因為調試applet的正常方法是使用appletviewer


根據JPDA文檔(我假設您已經閱讀過,基於您已經嘗試過的內容),您應該能夠在Java控制面板中指定代理。 我從來沒有嘗試過這個,而且文檔聲稱你不能以這種方式中斷applet的啟動(只需附加到正在運行的applet),所以我所能做的就是祝你好運。

我有一個解決方法。 看起來JRE7_u21沒有打開端口,也沒有掛起,jconsole VM摘要沒有顯示Java控制面板中配置的VM參數。

我降級到JRE7_u17,一切正常。 Java控制面板中的VM參數字符串是:

 -agentlib:jdwp=transport=dt_socket,address=8889,server=y,suspend=y,quiet=n,timeout=10000  

它似乎沒有

 -Djava.compiler=NONE

沒有其他工作,甚至沒有像以前建議的那樣替換lib文件夾。 我甚至試過一些注冊表黑客攻擊(改變路徑)。

您可以使用JAVA_TOOL_OPTIONS環境變量來傳遞默認的JVM參數。 它會將params傳遞給在瀏覽器中運行的applet(而不僅僅是applet)。 這種方法甚至可以在java 7u21及更高版本上運行。

暫無
暫無

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

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