`
weiwei5910
  • 浏览: 26828 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类

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

阅读更多

原文链接: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 环境变量已经配置好了,但有依赖包,这样就要设置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用bat运行程序

    有几个程序的代码,主要是关于将Java程序写到.bat文件中双击后直接运行

    bat 运行java main方法

    源代码,jar包及bat文件,注意:bat文件中不能有空格。

    shell,bat脚本运行java程序

    shell,bat脚本运行java程序, shell,bat脚本运行java程序,

    Java Socket聊天代码(支持群聊,server负责转发,可连接多个client,附带.bat启动程序)

    1、支持群聊,server负责转发,可连接...2、附带.bat启动程序,server.bat启动服务(可修改server.bat,改变服务端口号) 3、client.bat启动客户端(可修改client.bat,设置服务端ip和端口号) 注:需安装java运行环境

    java扫雷程序.rar

    java编写的扫雷程序源码,1... 在java环境下,运行java StartJMine启动程序,或双击StartJMine.bat启动程序。程序框架都在JMine.java中。JMine.java 还包括两个线程类,分别为计时器线程和胜利后等待用户重起游戏的线程

    运行Dos命令工具(包装Windows下执行Java -Jar命令不让随便关闭,含Delphi7源码)

    在Windows下运行Java程序时,黑屏幕经常很容易被人关闭,于是写了一个EXE程序包装一下。 运行Dos命令执行Java -jar xxx.jar时,输出内容可见。可自定义运行Dos命令,运行后自动最小化右下角到任务栏,关闭时要确认...

    反编译APK,dex2jar和JD-GUI

    在命令行下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex 生成classes_dex2jar.jar 运行JD-GUI,打开上面生成的jar包,即可看到源代码了 二、apk反编译得到程序的源代码、图片、XML配置、语言资源等文件...

    flink新版本bat启动文件.zip

    flink新版本bin目录无bat文件就把上面文件复制进去就好了

    Java 编译 运行 一键 批处理

    [r] 运行一个已存在的Java程序 [c] 只编译但是不自动运行Java程序 [a] 如果发生编译或运行错误则自动打开记事本以方便修改 请注意,参数[a]必须放在参数列表的最后 更多请见 http://blog.csdn.net/nista

    java控制扫描仪控件(附:程序源代码)

    本源代码包括:TestJTwain.java,ScanTwice.java,DemoFrame.java,DemoADF.java,DemoFrame.java,DemoGetCapabilities.java,DemoHiddenUI.java,ImageDisplayer.java,DemoSaveJPEG.java等等一系列扫描仪功能,...

    windows下启动java jar包的bat脚本

    windows下启动java jar包的bat脚本 javaw后台启动,jdk1.8或者更高,winserver 2016 经过测试

    project_run.bat

    windows启动脚本,编写以jar包启动的脚本,其中还设置优化jvm参数,避免内存泄露,相关数值可根据服务器运行情况自行调整,方便快捷启动springboot项目

    用bat运行java文件中引用了外部jar的java程序

    NULL 博文链接:https://citywu123.iteye.com/blog/686691

    运行jar的bat和.sh文件

    里边就一个bat文件和.sh文件 开发的普通java程序从ide导出jar,编写bat在windows下运行,编写sh在linux下运行

    midp2exe.rar

    致使很多大屏机型游戏被“砍” 我已经打包 包括运行程序以及细胞分裂全系列 有兴趣到 wlp群:6350024 共享里下载 <br> <br>简介: 可以将你的JAVA程序转换为EXE文件在电脑上执行。当你点击打开...

    java打包为exe

    运行时还要到控制台下去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。因此,许多人说,Java 是一种方便开发者苦了用户的程序设计语言。

    Java Service Wrapper配置Java台程序Windows服务

    对以上配置的MyApp.bat进行测试,运行MyApp.bat,就像在Console窗口下运行Tomcat一样; 对以上配置的服务进行测试,运行InstallMyApp-NT.bat将把你的应用(此处为App)安装到Win32系统服务中了。 打开控制面板-...

    java程序调用bat文件,执行oracel数据库备份

    NULL 博文链接:https://weishaoxiang.iteye.com/blog/1237809

    又一个Java扫雷 界面超不错.rar

     在java环境下,运行java StartJMine启动程序,或双击StartJMine.bat启动程序。程序框架都在JMine.java中。JMine.java 还包括两个线程类,分别为计时器线程和胜利后等待用户重起游戏的线程。  版权声明:例子版权...

    apk2java工具

    步骤:下载上述反编译工具包,打开apk2java目录下的apktool1.4.1文件夹,内含三个文件:aapt.exe,apktool.bat,apktool.jar 注:里面的apktool_bk.jar是备份的老版本,最好用最新的apktool.jar 在命令行下定位到...

Global site tag (gtag.js) - Google Analytics