`
huangzhir
  • 浏览: 126373 次
  • 性别: 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就可以运行了,不需要配置任何环境

相关推荐

    bat 运行java main方法

    通过`bat`文件,我们可以轻松地在Windows环境中自动化执行Java程序,这对于测试、调试或部署过程非常有用。同时,这也有助于理解Java程序的生命周期和执行流程,是每个Java开发者必备的基础技能。

    java用bat运行程序

    这样,只需双击.bat文件,就可以自动调用Java虚拟机(JVM)运行我们的Java程序。下面,我们将详细探讨如何实现这个过程以及涉及的相关知识点。 首先,Java程序运行需要Java开发工具包(Java Development Kit,简称...

    shell,bat脚本运行java程序

    下面将详细介绍如何使用shell脚本(适用于Unix/Linux系统)和bat脚本(适用于Windows系统)来运行Java程序。 **shell脚本运行Java程序** 在Unix/Linux环境中,我们可以创建一个.sh文件作为shell脚本来执行Java程序...

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

    在IT行业中,我们经常需要处理各种编程任务,其中之一就是在命令行环境下运行包含外部jar依赖的Java程序。在Windows操作系统中,我们通常会使用批处理(BAT)文件来自动化这一过程。下面将详细介绍如何通过BAT文件...

    推荐了多个详细的startup.bat闪退问题解决办法

    2. Tomcat服务器的使用:Tomcat服务器是一种常用的Web服务器软件,用于运行Java Web应用程序。 3. 环境变量的配置:环境变量是操作系统中的一种配置,用于设置变量的值,以便在命令中使用。 4. 文件权限的设置:文件...

    service.bat文件(Tomcat)

    Apache Tomcat是一款广泛使用的开源Java Servlet容器,它能够运行Java Web应用程序,包括JSP和Servlets。`service.bat` 是Tomcat提供的一个批处理脚本,主要用于在Windows操作系统上将Tomcat服务安装、配置或管理为...

    flink新版本bat启动文件.zip

    4. 打开命令行窗口,切换到`bin`目录下,通过运行`start-cluster.bat`命令来启动Flink集群。 5. 使用`flink`命令(例如:`flink list`列出已提交的作业,`flink cancel <job_id>`取消作业等)进行其他管理操作。 ...

    自己写的可在未安装jdk的电脑上,通过.bat运行的jar包

    标题中的“自己写的可在未安装jdk的电脑上,通过.bat运行的jar包”指的是创建了一个Java应用程序,并将其打包成.jar格式的可执行文件,这样的jar包可以在没有安装Java Development Kit (JDK)的计算机上运行。...

    aapt.exe+apktool.bat+apktool_2.3.0.jar

    总之,"aapt.exe+apktool.bat+apktool_2.3.0.jar"这套组合提供了强大的Android应用逆向工程能力,让开发者能够深入了解APK的工作原理,进行定制化开发或安全分析。然而,正确使用这些工具,并尊重软件的知识产权,是...

    jadx-gui.bat/jadx-gui.exe

    在Windows系统中,`.bat`文件通常是一个批处理脚本,而`.exe`是应用程序的执行文件。这里,`jadx-gui.bat`可能是用于启动`jadx-gui.exe`的一个快捷方式或自动化脚本,两者都是为了运行jadx图形用户界面(GUI)。 ...

    将tomcat的startup.bat改为系统服务的方法

    Apache Tomcat 是一款广泛应用的开源Java Servlet容器,用于部署和运行Java Web应用程序。在系统管理中,为了确保依赖于Tomcat的应用程序能够在开机时自动启动并保持后台运行,将其转换为系统服务是一种常见做法。这...

    APK 最新反编译工具 dex2jar.bat apktool.bat

    3. **aapt.exe**: Android Asset Packaging Tool (aapt) 是Android SDK的一部分,用于处理应用的资源。它能打包、验证、压缩、清单处理和资源命名。在反编译过程中,aapt常被用来辅助解析和打包资源文件,虽然在本...

    java程序启动bat

    这种工具对于那些不想或不熟悉使用命令行的用户很有用,他们可以直接双击`.exe`文件来运行Java程序,而无需知道如何执行批处理文件或了解Java环境。批处理到exe转换器通常会封装批处理文件的内容和必要的Java运行时...

    Android在eclipse 缺少的工具包(hprof-conv.exe,,traceview.bat)

    然而,有时在使用Eclipse进行Android开发时,可能会遇到一些工具包缺失的问题,例如"Android在eclipse 缺少的工具包(hprof-conv.exe, traceview.bat)"。这两个文件是Android SDK中用于调试和性能分析的重要工具。 1...

    Ubantu tomocat启动报错 no opencv_java249 in java.library.path问题解决方案压缩包

    错误提示"no opencv_java249 in java.library.path"表明Java程序在运行时找不到名为`opencv_java249`的本地库,这个库是OpenCV的Java接口,用于在Java代码中调用OpenCV的功能。 2. **检查环境变量**: 首先,检查...

    tomcat service.bat

    Tomcat是开源的Java应用服务器,常用于部署和运行Web应用程序。 描述中的关键信息表明,`service.bat` 文件的作用是将Tomcat配置为服务,这意味着它会遵循Windows服务的管理规范,允许用户以服务的方式控制Tomcat的...

    安卓反编译软件jadx-gui.bat

    在使用`jadx-gui.bat`时,首先需要确保你已经在本地环境中正确安装了Java Development Kit (JDK),因为JADX依赖于JDK来运行。然后,将APK文件移动到包含`jadx-gui.bat`的bin目录下。双击运行这个批处理文件,它会...

    getPackageName.bat 可批量获取apk包名,getSign.bat可获取apk MD5和SHA1,记录一下以防丢失

    下面,我们将深入探讨这两个批处理脚本——`getPackageName.bat` 和 `getSign.bat`,以及它们在Android开发中的作用。 `getPackageName.bat` 脚本是为开发者设计的一个便捷工具,用于快速获取大量APK文件的包名。在...

    运行jar的bat和.sh文件

    通过这样的方式,用户无需了解程序的内部结构,只需在相应的操作系统上运行相应的脚本,即可启动Java程序。这种封装和分发方式在Java应用中非常常见,尤其适用于独立的桌面应用或者服务端程序。

    javajar包运行及bat文件制作.doc

    如果希望在运行时向Java程序传递参数,可以通过在bat文件中修改运行命令来实现。例如,对于以下Java代码: ```java public class TestFrame { public static void main(String[] args) { String s = args[0]; ...

Global site tag (gtag.js) - Google Analytics