让我们写的java程序像exe(..bat)一样运行
来源:互联网 发布:云海螺英语怎么样知乎 编辑:程序博客网 时间:2024/05/21 06:37
原文链接:http://huangzhir.iteye.com/blog/1883209
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 -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\
依赖包
%~dp0 为批处理符号
个人理解为 当前执行的批处理所在的目录
- 让我们写的java程序像exe(..bat)一样运行
- .jar像.exe一样双击可以运行
- 让你的程序像系统命令一样运行
- 像建筑设计师一样去写程序
- 像建筑设计师一样去写程序
- 关于"不能运行所有杀毒类程序(如:mmsk.exe rav.exe avp.exe...)的问题"(镜像劫持)
- bat 运行java程序
- JAVA调用EXE/BAT程序
- java-程序运行外部的exe程序
- 像写C#一样编写java代码
- java bat(简化的exe文件)
- java代码运行.bat或.exe文件
- ASP.NET程序也像WinForm程序一样运行
- 使用bat运行java程序
- 运行java程序批处理bat
- 运行Java程序批处理bat
- bat命令运行java程序
- 教你写一个可以运行java的bat文件
- 计算机本科/硕士找offer的总结
- Javascript闭包
- nyoj37 回文字符串
- Java中JButton常用设置
- Nginx实现正向代理
- 让我们写的java程序像exe(..bat)一样运行
- UML图之一——用例图
- django中怎么格式化当前时间
- Linux启动流程
- python simplejson模块的使用方法
- android模拟器启动错误
- asp.net SqlParameter 根据条件 有选择的添加参数
- pkg-config工具的使用
- 伟易达(深圳)2013.6.6实习生笔试题