让我们写的java程序像exe(.bat)一样运行

java 运行一个程序,用 java 包名.类名
如下
java com.java.Test


这是建立在java 环境变量(PATH,CLASSPATH)已经配置好了,而且没有依赖包的情况下。

要了解环境变量,就要来说JDK,JRE,JVM的关系。
引用 http://www.myexception.cn/program/1050343.html
引用
JDK,JRE与JVM浅析(整理)
使用Java -version是如何找到版本的:它是从C:\Program Files\Java\{jre文件夹名}\lib\i386中的jvm.cfg中读取的。

JDK(java develop kit ,java开发套件),JRE(java runtime environment,java运行时环境),JVM(java virtual machine,java虚拟机)
     JDK
     ++
        |-----jre
                ++
                  |-------jvm
                  |-------
      jre只是jdk的一个部分,我们只要拥有了一份jdk就可以进行java程序开发了,而顾名思义,jre是java运行的时候所依赖的平台,jvm则更只是jre的一个部分,jre除了虚拟机外还提供了众多链接库,这些库会被jvm在运行时调用。
      我们会发现java_home/下有一个bin文件夹和一个jre文件夹,而jre文件夹下也有一个bin文件夹,它们一样吗?显然不一样。
java_home/bin中的工具是sun公司提供给我们一些工具,如java.exe,javac.exe,而jre/bin下的工具是运行时所需的,于是我们可以发现java_home/bin下有一个javac.exe,而jre/bin下肯定没有javac.exe,这是很容易解释的。
      奇怪的是,sun公司给我们提供了两套jre,稍留意一下我们就会发现在装完jdk,还可以选择装一个jre,这个jre是被默认装到 C:\Program Files\Java下的。sun提供两套jre是有道理的,如果我们只是想运行java程序,那么去官网下一个jre就行了,而无需拿来一个jdk,如果是要开发java程序那就需要一个jdk了."jdk里面的工具几乎都是用java写的,所以jdk本身就是java应用程序,因此要使用jdk附的工具来开发java程序也必须要自行附一套jre才行,这就是java_home\jre存在的原因,而位于Program File\jre的那套jre就是拿来执行我们自己写的java应用程序的。不过,两套中任何一套jre都可以拿来执行我们所写的java应用程序,可是 jdk内附的开发工具在预设开发工具使用包装器(.exe)来启动的情况下,都拿自己支选用java_home\jre".(《Java深度历险》)
      因此,现在可以明白设path和classpath的作用了:

path是为jdk提供的那些工具设的,如java.exe,javac.exe 。
classpath是为java程序所用到的库文件所设的 。



如果 java 环境变量已经配置好了,但有依赖包,这样就要设置CLASSPATH
set CLASSPATH=d:\aa.jar;D:\lib\*;
java com.java.Test


如果要用相对路径可以用(CLASSPATH有多个用;隔开)
set MY_HOME=%~dp0
set CLASSPATH=%MY_HOME%xxx.jar;%MY_HOME%..\lib\*;
java com.java.Test


如果  java 环境变量的path,也没设置,就是说你执行java时,也就找不到命令。
这时执行时可以用 jre 里面的java的直接路径来运行。(jre 的绝对路径有空格,路径用“”包)
如下,
set MY_HOME=%~dp0
set CLASSPATH=%MY_HOME%xxx.jar;%MY_HOME%..\lib\*;
set JAVACMD=“D:\Program Files\MyEclipse 6.5\jre\bin\java” 
%JAVACMD% com.java.Test


也可以设置path
set MY_HOME=%~dp0
set CLASSPATH=%MY_HOME%xxx.jar;%MY_HOME%..\lib\*;
set PATH="D:\Program Files\MyEclipse 6.5\jre\bin"
java com.java.Test


如果想给jvm多分配点内存可用

set MY_HOME=%~dp0
set CLASSPATH=%MY_HOME%xxx.jar;%MY_HOME%..\lib\*;
set PATH="D:\Program Files\MyEclipse 6.5\jre\bin"
set JAVA_OPTS=-Xms128m -Xmx256m 
java %JAVA_OPTS% com.java.Test

可用相对路径,程序写完后,让别人下载,但别人机器可以没jre.或者没配置,这时可以把jre跟程序放一起让用户下载,直接就可以运行。
把jre放在程序上一级中。
如:

set MY_HOME=%~dp0
set CLASSPATH=%MY_HOME%xxx.jar;%MY_HOME%..\lib\*;
set PATH=%~dp0..\jre\bin
set JAVA_OPTS=-Xms128m -Xmx256m 
java %JAVA_OPTS% com.java.Test


把上面的命名成一个 XXX.bat 名字,
然后建立一个快捷方式,把快捷方式设置成指向XXX.bat ,把快捷方式图标设置成你的图标。
这样就可以exe一样执行了,还是绿色版本的,免安装。就是jre比较大点,有60M左右

程序目录
        图标文件
        快捷方式文件,指向 XXX.bat,加你的图标
        bin\
             你的写的程序.jar
             XXX.bat
        jre
           jre文件
        lib\
            依赖包

猜你喜欢

转载自huangzhir.iteye.com/blog/1883209