日期:2014-05-17  浏览次数:20735 次

我学了一年Java,不知道java_home是干什么的,大家帮帮忙!
首先声明一下分不多了,就这些,都拿去吧,昨天问了同样的问题,可是没有满意的答案,郁闷中。。。学了一年的java现在还不知道java_home是干什么的,更是惭愧,希望明白的人能给我讲讲,别嫌我烦啊
  我在网上看了好多帖子,有好多说是java_home是为了方便的,就像一个参数一样,如果改java的路径只需要改一下java_home就行了,而不需要改path和classpath,不设置java_home也可以滴。甚至还说java_home必须大写。可我用的是tomcat6.0如果不设置java_home,tomcat启不来,而且我试过不大写java_home也没事啊,郁闷,好多垃圾帖子误人子弟啊!
报错如下:
C:\tomcat6\bin>startup
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
C:\tomcat6\bin>
我现在不明白问什么要设置java_home,为什么要设置tomcat_home?
网上一些帖子说,tomcat6.0的tomcat_home是设置在startup.bat里面,设置tomcat_home一个原因是因为tomcat里面有一个文件夹lib,当tomcat启动的时候tomcat就会加载lib里面的一些常用的包,我做了一个实验,确实是这样,我们经常用的servlet.jar就是在这个包里面。虽然你的工程没有这个包但是还能运行,原因可能是这样。所以这个tomcat_home就是告诉这个tomcat应用程序,当你运行的时候根据tomcat_home这个路径来找这个lib包就行了,不知道这么理解对不?
但是我认为,因为我们配置了path这个环境变量,当tomcat应用程序启动以后tomcat里面的程序可以利用java的反射机制来找到它自身的路径啊,干嘛还要配置tomcat_home啊?我这么想是因为我们平时写的批处理命令当运行时就从来不用加载其他的jar包或者类,所以我们就不用配置自己的环境变量。不知道我这么理解对吗?
还有为什么要配置java_home啊?我这个始终不理解。我没有配置java_home,我配置了path,我在任何一个盘符下编译和运行我的应用程序都没问题。那么tomcat也是java写的,他为什么需要配置java_home啊?
写的有点多,但真的不希望老菜鸟就这么菜下去,也真心的希望能够得到满意的答复。先谢了!

------解决方案--------------------
我晕,CSDN这编辑器,太。。。。。。

if not "%JAVA_HOME%" == "" goto ADD_TOOLS

set JAVA=java

echo JAVA_HOME is not set. Unexpected results may occur.
echo Set JAVA_HOME to the directory of your local JDK to avoid this message.
goto SKIP_TOOLS

:ADD_TOOLS

set JAVA=%JAVA_HOME%\bin\java

if exist "%JAVA_HOME%\lib\tools.jar" goto SKIP_TOOLS

------解决方案--------------------
探讨
就像樓上有些兄弟所說的,那是因為你所執行的批處理檔直接或間接使用了Java_Home這個環境變量,你可以
仔細閱讀批處理檔的內容。

------解决方案--------------------
为什么要配置java_home,其实你知道你的Javajdk的安装路径,但是计算机并不知道,所以你必须要配置环境变量来告诉计算机你的javajdk的路径,当然你在path中直接配置也行,但是当你的javajdk路径改变了,你是不是要把path中的路径也改变,还有classpath中的路径也要改下,或者其他的一些用到javajdk的你都必须改,但是你配置了java_home的话,你只需要改变一下java_home中的路径就行了,省事,
在有就是tomcat中java_home,如果你要startup启动tomcat,那么必须配置java_home,因为tomcat启动必须依靠javajdk,他回去寻找java_home中配置的javajdk路径,但是要问为什么tomcat中必须用到java_home,那么可以这样认为,他是一种默认的,通用的,就行了,

纯属自己认为,仅供参考