本機庫
盡管jar文件非常方便,但仍然存在一個問題:Angry IP Scanner需要使用本機庫(* .dll / * .so / * .jnilib)才能執行一些低級網絡任務并使用本機GUI控件(由SWT工具包提供)。不幸的是,Java沒有提供將這些本機庫打包到jar文件中的標準方法,因為它們是由不了解jar文件格式的操作系統加載的。由于我們希望將程序作為單個文件分發,因此我們在這里使用的技巧是在加載本機庫之前自動提取它們。
默認情況下,JNI庫是使用System.loadLibrary()調用加載的,該調用希望從系統環境中找到該庫。Angry IP Scanner用自己的LibraryLoader.loadLibrary()替換這些調用,該調用首先嘗試從系統中加載該庫,然后從臨時目錄中加載,如果失敗,則將這些庫提取到臨時目錄中并再次加載它們。由于整個過程非常透明,因此這使用戶根本不了解這些本機庫。Angry IP Scanner本身不會從臨時目錄中刪除提取的文件,因為下次啟動時可能會利用這些文件。但是,如果用戶或某些系統進程將其刪除,則再次提取它們沒有問題。即使需要解壓,啟動Angry IP Scanner也不會超過兩秒鐘。
由于jar文件通常是跨平臺的,因此用戶也有可能嘗試運行為其他平臺構建的jar文件。在這種情況下,Angry IP Scanner將檢測到該情況,并使用跨平臺的Swing GUI工具包向用戶顯示提示消息。
IPScan中文使用方法文檔
推薦文章: