0%

利用bat运行java程序

如果是用C/C++写的程序,可以直接编译成二进制的exe文件,在windows上执行起来很方便。

而java程序,一般都是利用工具把程序打成jar包,通过java -jar xxx.jar运行,此外还需要有jdk或者jre环境才可以如此。

我很好奇,MineCraft既然是用java编写的,他是怎样解决这一问题的呢?

打包发布并不是一件容易的事儿,javaFX的打包我弄了好久也没明白。据我所知,打包主要有以下方式:

  • 普通的java项目,可以用ide提供的一些功能去生成可执行的jar包。Idea里的Modules,Libraries还有Artifacts我没弄明白,平时也都是稀里糊涂的。

  • maven程序可以通过两个常见的打包工具生成可执行的jar包

  • spring boot程序最为方便,他提供了一个专门的打包工具,直接package就可以生成可执行的jar包。

有时候jar包执行起来会有很多问题,希望以后可以有一个一统天下的打包神器。

要想像exe程序一样直接双击运行,有一个叫做exe4j的软件可以把可执行jar包转为exe文件。我没试过,因为觉得麻烦,exe4j的界面好像是上个世纪的软件。

通过bat执行java程序本质和java -jar xxx.jar没有区别。

如果已经有一个可执行的jar包,可以新建一个bat格式的文件,举个栗子:

1
2
@echo off
java -jar -Dfile.encoding=UTF-8 D:\BlogForServer\image-bed.jar

@echo off的作用是关掉黑框中的路径信息。

如果你在用IDEA,可以直接复制程序在IDEA运行时的命令:

举个栗子:

1
2
3
@echo off
D:\Software\Java\jdk-14\bin\java.exe --module-path D:\Software\Java\javafx-sdk-14.0.2.1\lib --add-modules javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:D:\Software\JetBrains\IntelliJ IDEA 2019.2.2\lib\idea_rt.jar=64980:D:\Software\JetBrains\IntelliJ IDEA 2019.2.2\bin" -Dfile.encoding=UTF-8 -classpath D:\Project\IdeaProjects\openJFX\target\classes;D:\Software\Java\javafx-sdk-14.0.2.1\lib\src.zip;D:\Software\Java\javafx-sdk-14.0.2.1\lib\javafx-swt.jar;D:\Software\Java\javafx-sdk-14.0.2.1\lib\javafx.web.jar;D:\Software\Java\javafx-sdk-14.0.2.1\lib\javafx.base.jar;D:\Software\Java\javafx-sdk-14.0.2.1\lib\javafx.fxml.jar;D:\Software\Java\javafx-sdk-14.0.2.1\lib\javafx.media.jar;D:\Software\Java\javafx-sdk-14.0.2.1\lib\javafx.swing.jar;D:\Software\Java\javafx-sdk-14.0.2.1\lib\javafx.controls.jar;D:\Software\Java\javafx-sdk-14.0.2.1\lib\javafx.graphics.jar sample.Main

只要能在ide里运行,用bat文件也能运行。

不过,上述方法只适合在本地小打小闹,如果要想要在别人的电脑上随意运行,此路不通。

等我会一点儿docker之后,这个问题也许能迎刃而解。