`
huangzhir
  • 浏览: 125003 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

让我们写的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\
            依赖包
10
5
分享到:
评论
8 楼 alvin198761 2013-06-13  
LinApex 写道
啥 让 java 像 exe 运行,搞忽悠呢。提供一个方法.
1.在myeclipse8.5中可以导出项目,将所有jar包以及项目都打包成一个jar文件包.如果需要在其他没有安装jre的机器上跑,需要将jre打包进来.
2.写一个bat文件,启动这个jar文件.
3.将bat及jar文件打包成exe文件即可。

我不想打击myeclipse的使用者,更不想打击这么高版本的使用这,你在eclipse上面装个fatjar就有你说的这个功能了,我不说别的,我就拿你的myeclipse来说,他是java开发的,他是不是给你的一个bat文件运行的呢,你看看众多java开发的程序,以前的不说,现在有几个用bat的,如果你是个客户,我丢给你一个jar,你买账吗?
7 楼 LinApex 2013-06-12  
啥 让 java 像 exe 运行,搞忽悠呢。提供一个方法.
1.在myeclipse8.5中可以导出项目,将所有jar包以及项目都打包成一个jar文件包.如果需要在其他没有安装jre的机器上跑,需要将jre打包进来.
2.写一个bat文件,启动这个jar文件.
3.将bat及jar文件打包成exe文件即可。
6 楼 huangzhir 2013-06-07  
houyujiangjun 写道
alvin198761 写道
1.先将所有需要的jar打包,扰码
2.用现有的工具将他做成exe
3.通过做安装包的工作吧exe和jre放在同一个目录,做成一个安装包
4.安装之后双击exe就可以运行了,不需要配置任何环境

正解.这是06年就成熟的技术了....

说的对,exe4j 打包工具就可以搞定了。原理差不多,做成工具,打包成exe文件。
这里只其实是大概介绍一下的原理,不用工具同样可以做。
呵呵,,,有点玩标题,需要要多努力!
5 楼 chenhailong 2013-06-07  
天啊,这样会被别人笑话的。

多多努力出点大家不知道的啊,努力 嘻嘻
4 楼 houyujiangjun 2013-06-07  
alvin198761 写道
1.先将所有需要的jar打包,扰码
2.用现有的工具将他做成exe
3.通过做安装包的工作吧exe和jre放在同一个目录,做成一个安装包
4.安装之后双击exe就可以运行了,不需要配置任何环境

正解.这是06年就成熟的技术了....
3 楼 freezingsky 2013-06-07  
主要是玩标题的吧。。
2 楼 sgq0085 2013-06-06  
不需要这么麻烦吧,META-INF\MANIFEST.MF包含如下信息:Main-Class: com.xxx.xxx.Main就可以了,可以通过Maven的maven-shade-plugin来实现
http://sgq0085.iteye.com/admin/blogs/1860364
1 楼 alvin198761 2013-06-06  
1.先将所有需要的jar打包,扰码
2.用现有的工具将他做成exe
3.通过做安装包的工作吧exe和jre放在同一个目录,做成一个安装包
4.安装之后双击exe就可以运行了,不需要配置任何环境

相关推荐

    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