明确需求

今天你编了一个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% %*

windows批处理运行java程序的更多相关文章

  1. Java魔法堂:以Windows服务的形式运行Java程序

    一.前言 由于防止维护人员误操作关闭Java控制台程序,因此决定将其改造为以Windows服务的形式运行.弄了一个上午总算搞定了,下面记录下来,以供日后查阅. 二.Java Service Wrapp ...

  2. java的windows自动化-自动运行java程序

    那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...

  3. windows下通过.bat运行java程序

    在windows下运行Java项目,单独的jar可以使用,java -jar xxx.jar 运行,如果是一个zip包,里面包含了class文件和所依赖的jar的时候,可以使用 (也可以以看看这里): ...

  4. 在 Sublime Text 3 中配置编译和运行 Java 程序

    参考网址:http://www.open-open.com/lib/view/open1388105023765.html 1. 设置 java 的 PATH 环境变量 2. 创建批处理或 Shell ...

  5. Jenkins 构建运行java程序

    我们将在Jenkins建立执行一个简单的 HelloWorld 应用程序,构建和运行Java程序.打开网址:http://localhost:8080/jenkins 第1步- 转到Jenkins 仪 ...

  6. 在 Sublime Text 2 中编译和运行 Java 程序,以及输出中文出错问题解决办法

    Sublime Text 2 是我最喜欢用来编码的文本编辑器,如果你尝试使用后相信你也会喜欢上它的.在这篇文章中我们将讨论如何在 Sublime Text 2 中编译和运行 Java 程序. 第一步: ...

  7. 创建用于编译和运行Java程序的批处理文件

    创建用于编译和运行Java程序的批处理文件 每次编译或运行Java程序时,都要在DOS命令行中输入很长的javac或java命令,悟空觉得太麻烦,就编写了一个适用于Windows操作系统的批处理文件b ...

  8. 在云端服务器centos7安装jvm并且运行java程序

    (1)在云端服务器 下载jdk http://www.linuxidc.com/Linux/2016-09/134941.htm(大致看这个文章后可以下载一个jdk的压缩包,然后将压缩包解压) 然后, ...

  9. 如何在linux下安装jdk并运行java程序

    一.进入root 大家可以看到我这里用的是CentOS 6.5 系统 二.测试网络与YUM是否可用 1.测试网络 ping www.baidu.com,如下图就是通了 参考: 一.JDK安装1.lin ...

随机推荐

  1. TagHelper是怎么实现的

    众所周知,在asp.net core中编写Razor视图的时候,用了一种新的写法--TagHelper 那这个TagHelper是怎么回事呢? 首先来看看TagHelper的项目位置,它是位于Micr ...

  2. 快来熟练使用 Mac 编程

    熟练使用工具,可以提高一个人的做事效率- 1. iTerm2快捷键使用 ⌘ + d: 垂直分屏,⌘ + shift + d: 水平分屏. ⌘ + ]和⌘ + [在最近使用的分屏直接切换.而⌘ + op ...

  3. 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  4. jdk源码分析PriorityQueue

    一.结构 PriorityQueue是一个堆,任意节点都是以它为根节点的子树中的最小节点 堆的逻辑结构是完全二叉树状的,存储结构是用数组去存储的,随机访问性好.最小堆的根元素是最小的,最大堆的根元素是 ...

  5. Ueditor上传图片后自定义样式类名

    Ueditor是百度的一个富文本插件,如果使用者会前端语言的话,那适用性就很好,特别是现在移动端纵横的情况.但往往使用者并不懂编程,要让他们使用前端语言的话是不可能的,这就需要我们在开发时就定义好整个 ...

  6. 使用python处理子域名爆破工具subdomainsbrute结果txt

    近期学习了一段时间python,结合自己的安全从业经验,越来越感觉到安全测试是一个体力活.如果没有良好的coding能力去自动化的话,无疑会把安全测试效率变得很低. 作为安全测试而言,第一步往往要通过 ...

  7. HTML学习(一)基础篇

    这篇文章有人比我总结的好,适用于新手,我就适当的铺垫一下,结尾处会给你们网站,我就不班门弄斧了. 一)HTML结构 1.<head>标签 <title> <base/&g ...

  8. Google C++单元测试框架GoogleTest---值参数化测试

    值参数化测试允许您使用不同的参数测试代码,而无需编写同一测试的多个副本. 假设您为代码编写测试,然后意识到您的代码受到布尔参数的影响. TEST(MyCodeTest, TestFoo) { // A ...

  9. iOS 10对隐私权限的管理(必须要改否则会crash)

    比如访问的摄像头.麦克风等硬件,都需要提前请求应用权限.允许后才可以使用,或者现在要提前声明,虽然以往要求不严格.比如在iOS10中访问通讯录时,强制必须在Info.plist中加入NSContact ...

  10. React Native FlexBox

    FlexBox 是React Native布局的一种算法,目的是为了适配不同尺寸的屏幕而设计的. 使用时最关键的就是flex关键字的用法. flex用于修饰当前View在父视图中的占比. 占比如何计算 ...