zoukankan      html  css  js  c++  java
  • windows批处理运行java程序

    明确需求

    今天你编了一个java swing版照片查看器,想让计算机上的所有照片默认打开方式都改成你的照片查看器.

    使用工具软件

    很多工具软件都是不把jre打包到exe中的,这就是说打包之后的exe只能运行在装了jre的机器上.这一点我是很满足的,有的人就想把jre打包到exe里面从而到处运行.推荐两款jar2exe工具:

    • exe4j:生成的是一个文件夹,jre会被导出到文件夹中,文件夹中包含一个exe.
    • jsmooth,我觉得这个比较好,可以生成一个独立的exe

    当你编的java程序有所改动之后,都需要重新生成exe,十分麻烦.不如下面批处理方法运行java程序灵活.

    常用的几个java命令

    • java.exe:在控制台下运行,是阻塞的.即你在控制台下输入java -jar haha.jar,知道haha.jar运行结束之后,你才能回到控制台下继续使用控制台.
    • javaw.exe:它是非阻塞的,当你编一个脚本
    javaw -jar haha.jar
    echo haha
    

    运行之,会发现haha.jar还没运行完就已经开始执行echo haha

    使用windows批处理

    如果你不想折腾,不想安装软件.那么必然是通过cmd或者exe来运行javaw -jar haha.jar来启动你的应用.

    使用cmd时,要注意把各个命令的回显关闭.echo off命令关闭全部回显,echo on打开会先,@mycmd命令表示执行mycmd这个命令时不显示回显.

    在批处理中传参数使用方法如下:

    • %0,%1,%2...表示第几个参数
    • %0表示命令本身,%1表示第一个参数,这跟c语言中main(int argcnt,char**args)是一样的
    • %*表示全部命令参数
    • %cd%表示当前工作区路径

    经过上面步骤还是会看见黑色控制台的,解决方案是使用start命令.它的作用是启动一个单独的窗口以运行指定的程序或命令。

    @start javaw haha.jar %*
    

    在调用javaw haha.jar时,会报错找不到haha.jar,解决方案一使用绝对路径(可移植性差),解决方案二就是获取当前运行脚本的路径

    • %~0或者%0: 取文件名(名+扩展名)
    • %~f0:取全路径
    • %~d0:取驱动器名
    • %~p0:只取路径(不包驱动器)
    • %~n0:只取文件名
    • %~x0:只取文件扩展名
    • %~s0:取缩写全路径名
    • %~a0:取文件属性
    • %~t0:取文件创建时间
    • %~z0:取文件大小

    以上选项可以组合起来使用,如%~nx0相当于%0,%dpnx0相当于%f0.

    使用exe运行javaw命令,可以编一段c++代码

    #include<stdio.h>
    #include<stdlib.h>
    using namespace std;
    int main(int cnt,char**args){ 
    	system("java -jar haha.jar ");
    	return 0;
    }
    

    windows批处理中的注释

    windows批处理的注释方式有好多种

    • rem方式,可以进行单行注释,在行末写^表示本行没有结束,相当于python中的''
    rem 这是第一行注释^
    这是第二行注释^
    每一行的结尾都加上转义字符就可以把多行当做1行来看,所以就不用每行都写rem
    pause
    
    • goto+标号方式
    goto :main
    这里可以写一些关于文档的说明
    如作者、编写日期等信息
    这些信息写完后,添加主标签就可以,运行时,会直接跳到main标签开始运行
    :main
    echo hello world
    

    总结

    批处理文件方式最好.最终结果

    set x=%~dp0%haha.jar
    start javaw -jar %x% %*
    
  • 相关阅读:
    安装CentOS7
    gitlab的CI/CD实现
    如何实现7*24小时灵活发布?阿里技术团队这么做
    架构整洁之道, 看这一篇就够了!
    什么是数据湖?有什么用?
    2020 云原生 7 大趋势预测
    饿了么交易系统 5 年演化史
    ajax 传参数 数组 会加上中括号
    文件下载
    数组常用方法
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/6082011.html
Copyright © 2011-2022 走看看