知识大全 怎样制作可执行的java程序
Posted 文件
篇首语:真正有知识的人谦虚、谨慎;只有无知的人才冒昧、武断。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 怎样制作可执行的java程序相关的知识,希望对你有一定的参考价值。
常常在网上看到有人询问 如何把java程序编译成 exe文件 通常回答只有两种 一种是制作一个可执行的JAR文件包 然后就可以像 chm文档一样双击运行了 而另一种是使用JET来进行 编译 但是JET是要用钱买的 而且据说JET也不是能把所有的Java程序都编译成执行文件 性能也要打些折扣 所以 使用制作可执行JAR文件包的方法就是最佳选择了 何况它还能保持Java的跨平台特性 下面就来看看什么是JAR文件包吧 JAR文件包 JAR文件就是JavaArchiveFile 顾名思意 它的应用是与Java息息相关的 是Java的一种文档格式 JAR文件非常类似ZIP文件 准确的说 它就是ZIP文件 所以叫它文件包 JAR文件与ZIP文件唯一的区别就是在JAR文件的内容中 包含了一个META INF/MANIFEST MF文件 这个文件是在生成JAR文件的时候自动创建的 举个例子 如果我们具有如下目录结构的一些文件 == ` test ` Test class 把它压缩成ZIP文件test zip 则这个ZIP文件的内部目录结构为 test zip ` test ` Test class 如果我们使用JDK的jar命令把它打成JAR文件包test jar 则这个JAR文件的内部目录结构为 test jar | META INF | ` MANIFEST MF ` test ` Test class 创建可执行的JAR文件包 制作一个可执行的JAR文件包来发布你的程序是JAR文件包最典型的用法 Java程序是由若干个 class文件组成的 这些 class文件必须根据它们所属的包不同而分级分目录存放 运行前需要把所有用到的包的根目录指定给CLASSPATH环境变量或者java命令的 cp参数 运行时还要到控制台下去使用java命令来运行 如果需要直接双击运行必须写Windows的批处理文件( bat)或者Linux的Shell程序 因此 许多人说 Java是一种方便开发者苦了用户的程序设计语言 其实不然 如果开发者能够制作一个可执行的JAR文件包交给用户 那么用户使用起来就方便了 在Windows下安装JRE(JavaRuntimeEnvironment)的时候 安装文件会将 jar文件映射给javaw exe打开 那么 对于一个可执行的JAR文件包 用户只需要双击它就可以运行程序了 和阅读 chm文档一样方便( chm文档默认是由hh exe打开的) 那么 现在的关键 就是如何来创建这个可执行的JAR文件包 创建可执行的JAR文件包 需要使用带cvfm参数的jar命令 同样以上述test目录为例 命令如下 jarcvfmtest jarmanifest mftest 这里test jar和manifest mf两个文件 分别是对应的参数f和m 其重头戏在manifest mf 因为要创建可执行的JAR文件包 光靠指定一个manifest mf文件是不够的 因为MANIFEST是JAR文件包的特征 可执行的JAR文件包和不可执行的JAR文件包都包含MANIFEST 关键在于可执行JAR文件包的MANIFEST 其内容包含了Main Class一项 这在MANIFEST中书写格式如下 Main Class:可执行主类全名(包含包名) 例如 假设上例中的Test class是属于test包的 而且是可执行的类(定义了publicstaticvoidmain(String[])方法) 那么这个manifest mf可以编辑如下 Main Class:test Test <回车> 这个manifest mf可以放在任何位置 也可以是其它的文件名 只需要有Main Class:test Test一行 且该行以一个回车符结束即可 创建了manifest mf文件之后 我们的目录结构变为 == test Test class manifest mf 这时候 需要到test目录的上级目录中去使用jar命令来创建JAR文件包 也就是在目录树中使用 == 表示的那个目录中 使用如下命令 jarcvfmtest jarmanifest mftest 之后在 == 目录中创建了test jar 这个test jar就是执行的JAR文件包 运行时只需要使用java jartest jar命令即可 需要注意的是 创建的JAR文件包中需要包含完整的 与Java程序的包结构对应的目录结构 就像上例一样 而Main Class指定的类 也必须是完整的 包含包路径的类名 如上例的test Test 而且在没有打成JAR文件包之前可以使用java <类名> 来运行这个类 即在上例中javatest Test是可以正确运行的(当然要在CLASSPATH正确的情况下) jar命令详解 jar是随JDK安装的 在JDK安装目录下的bin目录中 Windows下文件名为jar exe Linux下文件名为jar 它的运行需要用到JDK安装目录下lib目录中的tools jar文件 不过我们除了安装JDK什么也不需要做 因为SUN已经帮我们做好了 我们甚至不需要将tools jar放到CLASSPATH中 使用不带任何的jar命令我们可以看到jar命令的用法如下 jarctxu[vfm M][jar 文件][manifest 文件][ C目录]文件名 其中ctxu是jar命令的子命令 每次jar命令只能包含ctxu中的一个 它们分别表示 c 创建新的JAR文件包 t 列出JAR文件包的内容列表 x 展开JAR文件包的指定文件或者所有文件 u 更新已存在的JAR文件包(添加文件到JAR文件包中) [vfm M]中的选项可以任选 也可以不选 它们是jar命令的选项参数 v 生成详细报告并打印到标准输出 f 指定JAR文件名 通常这个参数是必须的 m 指定需要包含的MANIFEST清单文件 只存储 不压缩 这样产生的JAR文件包会比不用该参数产生的体积大 但速度更快 M 不产生所有项的清单(MANIFEST〕文件 此参数会忽略 m参数 [jar 文件]即需要生成 查看 更新或者解开的JAR文件包 它是 f参数的附属参数 [manifest 文件]即MANIFEST清单文件 它是 m参数的附属参数 [ C目录]表示转到指定目录下去执行这个jar命令的操作 它相当于先使用cd命令转该目录下再执行不带 C参数的jar命令 它只能在创建和更新JAR文件包的时候可用 文件名 指定一个文件/目录列表 这些文件/目录就是要添加到JAR文件包中的文件/目录 如果指定了目录 那么jar命令打包的时候会自动把该目录中的所有文件和子目录打入包中 下面举一些例子来说明jar命令的用法 )jarcftest jartest 该命令没有执行过程的显示 执行结果是在当前目录生成了test jar文件 如果当前目录已经存在test jar 那么该文件将被覆蓋 )jarcvftest jartest 该命令与上例中的结果相同 但是由于v参数的作用 显示出了打包过程 如下 标明清单(manifest) 增加 test/(读入= )(写出= )(存储了 %) 增加 test/Test class(读入= )(写出= )(压缩了 %) )jarcvfMtest jartest 该命令与 )结果类似 但在生成的test jar中没有包含META INF/MANIFEST文件 打包过程的信息也略有差别 增加 test/(读入= )(写出= )(存储了 %) 增加 test/Test class(读入= )(写出= )(压缩了 %) )jarcvfmtest jarmanifest mftest 运行结果与 )相似 显示信息也相同 只是生成JAR包中的META INF/MANIFEST内容不同 是包含了manifest mf的内容 )jartftest jar 在test jar已经存在的情况下 可以查看test jar中的内容 如对于 )和 )生成的test jar分别应该此命令 结果如下 对于 ) META INF/ META INF/MANIFEST MF test/ test/Test class 对于 ) test/ test/Test class )jartvftest jar 除显示 )中显示的内容外 还包括包内文件的详细信息 如 WedJun : : GMT META INF/ WedJun : : GMT META INF/MANIFEST MF WedJun : : GMT test/ WedJun : : GMT test/Test class )jarxftest jar 解开test jar到当前目录 不显示任何信息 对于 )生成的test jar 解开后的目录结构如下 == | META INF | ` MANIFEST ` test ` Test class )jarxvftest jar 运行结果与 )相同 对于解压过程有详细信息显示 如 创建 META INF/ 展开 META INF/MANIFEST MF 创建 test/ 展开 test/Test class )jaruftest jarmanifest mf 在test jar中添加了文件manifest mf 此使用jartf来查看test jar可以发现test jar中比原来多了一个manifest 这里顺便提一下 如果使用 m参数并指定manifest mf文件 那么manifest mf是作为清单文件MANIFEST来使用的 它的内容会被添加到MANIFEST中 但是 如果作为一般文件添加到JAR文件包中 它跟一般文件无异 )jaruvftest jarmanifest mf 与 )结果相同 同时有详细信息显示 如 增加 manifest mf(读入= )(写出= )(压缩了 %) 关于JAR文件包的一些技巧 )使用unzip来 cha138/Article/program/Oracle/201311/18223 类名>回车>相关参考
Java程序中用JFreeChart制作图形报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JAVA执行JS文件里的程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在这个网址下载一个调用ssh和scp命令的jar包 然后就可以写程序了将上面的jar包导入MyEclipse下面是一个类的实例代码 packagehh; importjavaioBuffer
怎样为JAVA应用程序设置时间区 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一般JAVA程序
/*进程是一个正在执行的程序 *每一个进程执行都有一个执行顺序该顺序是一个执行路径或者叫一个控制单元 * *线程就是进程中的一个独立的控制单元 * 线程在
JAVA调用exe可执行文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! publicclas
详细讲解怎样在Java中运行其它应用程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! impo
“与”、“或”、“非”逻辑运算是数字电路中的概念,在PLC的编程手册中,经常会遇到它们,有的指令用“与”、“或”、“非”命名。“与”、“或”、“非”运算的输入输出可以用以下关系来描述,A.B是输入
“与”、“或”、“非”逻辑运算是数字电路中的概念,在PLC的编程手册中,经常会遇到它们,有的指令用“与”、“或”、“非”命名。“与”、“或”、“非”运算的输入输出可以用以下关系来描述,A.B是输入
行政程序从纵向可分为行政计划准备、执行计划、检查监督和考核奖惩等
行政程序从纵向可分为行政计划准备、执行计划、检查监督和考核奖惩等。_____答案:错误解析:行政程序从纵向可分为行政计划准备、决定计划、执行计划、检查监督与考核奖惩等。题干说法不完整,故本题判断错误。