答案是这样的:
你可能把tomcat装在c:/tomcat里,也可能把tomcat装在d:/jerrymouse里,tomcat怎么知道自己的文件都在哪儿呢? 在Windows里面程序可以到registry里查,java是跨平台的,不应该读registry,而应该利用更通用的途径,比如象tomcat_home这样的操作系统环境变量。
为了保持独立与操作系统的特性,java程序并不能直接读到操作系统环境变量。如果不用任何诡计,java程序只能“求”你在启动程序的时候利用java的-D参数把变量告诉它。比如java -Djava_home=%java_home% start_the_servlet_engine.你一定很讨厌每次都打如-D...那些东西,所以通常这种东西都放在一个.bat文件或是unix的.sh文件里。
实际上tomcat就是这样利用java_home的,用这个办法找到java编译器,然后调用java编译器来编译jsp和servlet程序。至于tomcat_home,可能只是.bat文件里用的。因为.bat文件里不应该写c:/tomcat/bin/start_engine这样的话,以防你的tomcat躲在d:/jerrymouse里,所以它写成%tomcat_home%/bin/start_engine。(我不记得具体的程序名,可能不是"start_engine"是别的什么东东,但是这个道理。
java程序怎样读-D参数给的变量? 用System.getProperty("变量名")。
如果你想读到Windows的那些环境变量(在cmd窗口里用set看到的那些),就要用一些阴谋诡计,那样的程序通常很丑陋。
话说tomcat_homehe java_home的作用
最新推荐文章于 2024-08-02 12:54:31 发布