我们在开发Java GUI后需要打包运行
步骤如下:
在eclipse 中直接点击export,然后选择 runnable jar,然后选择Main 类
最后Finish
问题:
(1)程序中引用了第三方架包,如qrcode.jar,需要在清单文件MANIFEST.MF 中罗列路径,并将第三方架包放在对应路径下
此时应该在自己的jar包的同一个文件夹下面建一个jl_lib文件夹,然后把两个引用的jar包放在里面。
(2)程序中引用了图片或者文档等资源,需要把这些资源放在自己架包的同一路径下如:
(3)编写.bat文件运行jl.jar架包
java -jar .;jl.jar;
pause;
上面的会出现错误 unable access jarfile jl.ba替换成
java -jar jl.jar
pause
可以正常使用,pause的作用是再出现bug的时候使对话框不会闪退
(5)在没有jre的设备上运行
将JRE拷贝到自己的Jar包的同一路径一
同时在bat文件中进行设置如下:
if /i "%PROCESSOR_IDENTIFIER:~0,3%"=="X86" (set JRE=jre32) else (set JRE=jre64)
set JAVA_HOME=%~dp0%JRE%
set PATH=%JAVA_HOME%\bin;C:\Windows;C:\Windows\Command
set CLASSPATH=%JAVA_HOME%\jre\lib\rt.jar;.
java -jar jl.jar
pause
(6)我们在执行bat的时候,会弹出cmd的黑色处理框,
我们可以通过一个.vbs执行bat文件,
.vbs内容(将下面内容保存为一个vbs文件 :runjava.vbs)
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c runjava.bat",vbhide
注意:在实际运行程序的时候经常会出现 错误:
java.lang.OutOfMemoryError: Java heap space
原因是 内存超出,因为JVM的有个默认分配的内存,而且这个大小是不固定的
堆内存分配 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
方法:在启动文件中设置固定内存大小:
if /i “%PROCESSOR_IDENTIFIER:~0,3%”==”X86”
(set JRE=jre32) else (set JRE=jre64)
set JAVA_HOME=%~dp0%JRE%
set PATH=%JAVA_HOME%\bin;C:\Windows;C:\Windows\Command
java -jar -Xmn128m -Xms512m -Xmx512m jl.jar
pause