用以下命令打包独立程序(在控制台运行)
javapackager -deploy -appclass Test -native image -srcdir archive -outdir deploy -outfile Test -Bruntime=$JAVA_HOME/jre
参数说明
-appclass Test
还是指定应用程序主类
-srcdir archive
指定源目录,这里指定的是我们刚才打包存放 jar 文件的目录
-outdir deploy
指定输出目录,名字随你喜好
-outfile Test
指定输出文件名,名字随你喜好
-native image
指定输出的本地程序类型,image 的话只生成一个启动器(exe),也有别的选项可以生成安装程序等等(需要第三方工具)
-Bruntime=$JAVA_HOME/jre(如果不加这个参数会自动选择本地的jdk)
指定打包出来的独立程序使用的 jre 的位置,这里用的是本人的 jdk 自带的 jre,如果你用的是 cmd 的话写成 %JAVA_HOME%\jre
也可以指定别的 jre,但是要小心保证 javapackager 所在的 jdk 和所使用的 jre 的位数相同(即都是32位或都是64位,最好版本也相同,最最好就直接用 jdk 自带的 jre)
这样打包就完成了,可以自己运行以下试试
第一步:将浏览器嵌入到java swing中,需要的三个包如下:DJNativeSwing.jar DJNativeSwing-SWT.jar swt-3.6M3-win32-win32-x86
代码如下:
package com.langtop.webBrowser; import chrriis.common.UIUtils; import chrriis.dj.nativeswing.NSOption; import chrriis.dj.nativeswing.swtimpl.NativeInterface; import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Toolkit; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class CRMWebBrowser extends JPanel { public CRMWebBrowser() { super(new BorderLayout()); JPanel webBrowserPanel = new JPanel(new BorderLayout()); JWebBrowser webBrowser = new JWebBrowser(new NSOption[0]); webBrowser.navigate("http://baidu.com"); webBrowserPanel.add(webBrowser, "Center"); add(webBrowserPanel, "Center"); webBrowser.setMenuBarVisible(false); webBrowser.setLocationBarVisible(false); webBrowser.setBarsVisible(false); webBrowser.setOpaque(false); webBrowser.setStatusBarVisible(false); JPanel buttonPanel = new JPanel(new FlowLayout(1, 4, 4)); add(buttonPanel, "South"); } public static void main(String[] args) { UIUtils.setPreferredLookAndFeel(); NativeInterface.open(); SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame("百度PC客户端测试"); frame.setDefaultCloseOperation(3); frame.setIconImage(Toolkit.getDefaultToolkit().createImage( "/icon.png")); frame.getContentPane().add(new CRMWebBrowser(), "Center"); frame.setExtendedState(6); frame.setDefaultCloseOperation(3); frame.setLocationByPlatform(true); frame.setVisible(true); } }); NativeInterface.runEventPump(); } }
第二步:打成jar包
用myeclipse 提供的打包工具,它不会将第三方用的包打包进去,所以下载 myeclipse插件 fat jar ,这个插件可以将第三方包打进你要打的包里面。
第三步:生成可exe可执行文件
下载exe4j工具将jar包生成exe可执行文件,但是这样不会将java环境打包进去,这样生成的exe文件是无法在没有java环境的机器上运行的,所以将jdk目录下的jre目录全部cope出来发在和jar文件的同目录,这样再生成exe文件,java环境也就有了,将这个文件夹全部copy给别人就能用了,但是这样每次都要去copy一个文件夹,很麻烦,也很不专业。
第四步:生成exe可执行文件,生成安装文件,这样别人拿到这个exe安装文件后,直接点击安装,jre目录也就直接生成在安装目录了。
下载Inno Setup Compiler 这个工具,操作上一步生成的exe文件,一步一步将生成可安装的exe文件。
- 等 最代码怎么获取牛币啊?
- 完 谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等 牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完 在微信打开的页面里进行app下载
- 等 最代码2014年欢乐聚声会
- 完 mysql如何查询表数据并且对3个字段降序的SQL?
- 完 最代码牛币机制改革
- 完 成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完 进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等 为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等 最代码是否开发手机app客户端?
- 完 java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等 php格式网页文件怎么运行?
- 等 Java volatile值获取的问题
- 等 前端vue,拦截了登录后台后,返回的token,requests拦截token,但是发送请求的时候,就出现跨越异常
- 等 大专本科计算机科班怎么找到Java工作?
- 等 eclipse怎么把三个java swing游戏项目合成一个项目?
- 完 伙伴们,大家都有什么好的解压方式么,分享一下~
- 完 三四线城市,6、7k,运维工作,索然无味,想去辞职上培训,各位牛牛有什么建议嘛
- 等 jsp页面输入中文变成问号
- 等 JPA在线上运行一段时间后报错Caused by: java.lang.IncompatibleClassChangeError: null
- 等 PHP 这个规则用preg_match_all怎么写
- 等 大佬们,有没有知道Alfresco如何配置LDAP登录呢?
- 等 php的install目录是框架带的吗?