簡體   English   中英

我怎樣才能在運行時調試jar?

[英]how can I debug a jar at runtime?

我從一個非常奇怪的位置(從我的java-newbie觀點來看):

  1. 使用Eclipse我寫了一個“java程序”(一些帶有類的.java文件),它基本上(批處理)讀取文本* .csv文件,“評估”其內容,並將結果寫入* _out.csv文本文件。 要找到輸入文件,它使用“文件選擇器”(從此處獲取示例: http//docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

  2. 我調試了所有代碼,並使用調試器, 它的工作原理

  3. 我運行了代碼(主類,它按順序調用所有其他代碼), 在Eclipse中運行

  4. 我將所有項目的內容導出到“runnable jar”文件中。

請注意,文件選擇器分開,這主要是一個讀寫的“批處理”:幾乎沒有用戶界面。 在Eclipse中,我使用類似“ if(debug)System.out.print(”要打印的東西“)的內容顯示了一些內部結果; ”在生產環境中提供設置“ debug ”為TRUE而調試時為FALSE。

所有上述工作!

現在,啟動runnable jar(雙擊jar文件,在Win / XP中), 我可以看到文件選擇器,我可以使用它但是,在選擇輸入文件之后...... 僅此而已 :(沒有用戶界面) )我不知道文件是否被讀取,我沒有看到任何生成的輸出文件,我甚至沒有“控制台”列出任何中間調試消息,看看jar是否正常工作,即使我重新-export,調試變量設置為TRUE。

有沒有辦法“運行時調試”正在運行的jar(如VB的MsgBox,或其他東西)? 某種“日志文件”我可以“啟用”或查看? (很明顯,因為我的jar沒有寫結果文件,所以我也不能嘗試編寫* .log)我還要說我不能在我的機器上安裝除Eclipse之外的東西(幸運的是它跑了),所以沒有通常的開發人員的工具,實用程序和其他有用的東西。

http://www.eclipsezone.com/eclipse/forums/t53459.html

基本上運行它:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044

啟動時,應用程序將一直等到您從其他來源連接。

使用特殊選項啟動java命令時,可以激活JVM的調試功能:

java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar path/to/some/war/or/jar.jar

在命令行上啟動jar.jar會:

  • 將此 JVM實例置於服務器( server=y )的角色中偵聽端口8000( address=8000
  • 寫入Listening for transport dt_socket at address: 8000stdout
  • 然后暫停應用程序( suspend=y )直到某個調試器連接。 在此方案中,調試器充當客戶端

選擇調試器的常用選項有:

  • Eclipse Debugger:在Run - > Debug Configurations ...下 - 選擇Remote Java Application - >單擊New launch configuration按鈕。 為此調試配置提供任意名稱連接類型:標准(套接字連接)連接屬性條目主機:localhost端口:8000 應用更改並單擊“ 調試” 在Eclipse Debugger成功連接到JVM的那一刻, jar.jar應該開始執行。
  • jdb命令行工具 :使用jdb -connect com.sun.jdi.SocketAttach:port=8000啟動它

即使它是一個可運行的jar,你仍然可以從控制台運行它 - 打開一個終端窗口,導航到包含jar的目錄,然后輸入“java -jar yourJar.jar”。 它將在該終端窗口中運行,並且sysout和syserr輸出將出現在那里,包括來自未捕獲異常的堆棧跟蹤。 編譯時一定要將調試設置為true。 還有祝你好運。


只是想到了別的東西 - 如果你在Win7上,它通常會有用戶應用程序將文件寫入特定目錄的權限問題。 確保您編寫輸出文件的目錄是您具有權限的目錄。

在未來的項目中,如果它足夠大,您可以使用標准日志記錄工具之一進行“調試”輸出; 然后將它重定向到文件而不是依賴於控制台將很容易(ier)。 但對於像這樣的小工作,這應該沒問題。

使用IntelliJ IDEA您可以創建Jar Application運行時配置,選擇JAR ,源代碼,運行JarJRE並開始調試。 是文檔。

暫無
暫無

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

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