歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 怎樣利用Java虛擬Unix/Linux的文件路徑

怎樣利用Java虛擬Unix/Linux的文件路徑

日期:2017/2/28 16:40:58   编辑:Linux教程

大部分的java程序應用於Unix/Linux系統,而絕大部分的開發是在Windows下。雖然,java可以運行在anywhere, 但畢竟還有很多環境配置問題。

例如在UNIX下,你需要將某些配置文件的路徑寫入到另一個配置文件。 也許有很多局限,使你必須寫入絕對路徑。

在config.propertIEs裡寫入

logs = /logs/app/db/logs.properties

configs=/usr/WebSphere/AppServer/installedApps/appname/earname/warname/WEB-INF/properties/myconfig.properties

在開發階段,你是否願意在你的Windows開發機上建立上面這樣的目錄,或者逐個修改這個路徑呢? 尤其在已有的系統下,為了開發新的功能,構築開發環境時,這種配置文件路徑的修改是相當花時間的。 並且,在Release時,你必須要使用Ant工具批量修改這些配置文件。 但我可以說,大部分項目只有給生產和系統集成測試環境才會配置Ant工具。而在低級別的測試環境下,你只能手動更改。 那麼如何才能不修改任何文件可以再Windows本地調試並運行呢?

我給出一個小小方案。


1. 重寫java.io.File類


先不要向我丟香蕉皮, 重寫java.io.File並不一定要變動rt.jar文件。 jvm支持pretend,也就是偽裝,我可以把我重寫的java.io.File在運行期時代替rt.jar原有的java.io.File類。 想了解更詳細的信息可以在 JAVA_HOME裡找這個文件:[ JAVA_HOME]\bin\client\Xusage.txt


-Xbootclasspath/p:

prepend in front of bootstrap class path


在調試時,我就是要用這個參數。假設,我把重寫的java.io.File類文件打包為filemap_1_4.jar。調試時,我就可以運行 java -Xbootclasspath/p:\MyProject\FileMap/filemap_1_4.jar -cp ...


這樣,在我調用的所有類裡,涉及到文件或文件系統功能時,都調用D:\MyProject\FileMap/filemap_1_4.jar 下面的java.io.File而不是rt.jar.


2. 功能實現


2.1 文件目錄映射關系

為了增加一些靈活性, 我使用一個目錄映射文件,來定義UNIX/LINUX文件路徑和Windows文件路徑的映射關系。


例如,filemap.properties

/usr/WebSphere/AppServer/installedApps/appname/earname/warname/=C:/MyProject/

/logs/app/db/=c:/MyProject/logs


當程序要讀取/usr/WebSphere/AppServer/installedApps/appname/earname/warname/WEB-INF/properties/myconfig.properties


文件時,java.io.File會映射到C:/MyProject/WEB-INF/properties/myconfig.properties。

Copyright © Linux教程網 All Rights Reserved