热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JsmoothJava文件打包成exe文件(可以在没安装JDK的环境下运行)

最近用JavaSwing做了一个小小的界面项目,想要把它打包成exe可执行文件,上网络搜索到了可以使用Jsmooth打包,挺方便的。现在,将网络上的资料总结下,并说说自己遇到的问

          最近用Java Swing做了一个小小的界面项目,想要把它打包成exe可执行文件,上网络搜索到了可以使用Jsmooth打包,挺方便的。现在,将网络上的资料总结下,并说说自己遇到的问题。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1、将java程序导出jar包,打包的方式有两种,一种是将当前项目文件以及相关引用全部打入同一个jar包,另外一种是将当前项目文件打成单独jar包。两种方法都可以。但是建议使用第二种,这种方式维护和升级都比较方便,只更新jar包即可,当然第一种也有好处,第一种在生成exe选项的时候,可以将所有的jar文件打包到.exe中去,可以使程序看起来简单。


2、新建一个目录(如:D:\test\program),将所用到的所有转化文件放入到该目录中去。包括.exe的图标、jrejar文件等。(注意此例子生成的.exe可以在无jre的环境下运行,jre已经被当成程序的一部分了,把所有文件放入同一个文件夹可以指定相对目录)目录结构如下:


3、启动JSmooth,点击左侧的导航 “骨架”,在打开的页面中选择“Console Wrapper, this is for console application


4、选择左侧导航“可执行文件”,在打开的页面中点击“可执行的二进制文件”的右侧浏览按钮,将路径选择到刚才建立的目录下(D:\test\program),此目录即是生成.exe程序的基本目录,自己起一个.exe的名称,如sign.exe.


5、选择可执行文件的图标,选择同一个目录中的图标

6、选中“设置执行文件所在的目录为应用程序的当前目录”,此选项可以将当前的.exe所在的目录设置为应用程序的根目录,其他文件的目录为相对该目录的相对目录,这样就可以做到不管程序被拷贝到哪里,都可以运行,而不是一个绝对目录


7、点击保存按钮,为什么要在此时保存呢?这个可能是JSmooth的一个小问题,上一步骤中选中的相对目录,貌似是工程文件(JSmoonth工程)所在的目录。把工程文件保存在该目录下,即可完成对所有选中文件相对路径设置。点击保存按钮,将文件保存在相对目录中去,名字可以任意取。例子中将该工程文件保存在D:\test\program\abc.jsmooth,再强调一下工程文件一定要保存在根目录里,相对路径的问题才能解决。保存完毕后,看下图(注意要切换下页面才能看到这个信息,如点一下"骨架",再点"可执行文件",路径已经变成相对路径了,原来的 D:\test\program\sign.exe 已经变成 sign.exe):


8、点击左侧导航 “应用程序”,在打开的页面中,选配置Classpath路径,即你的java项目文件的jar包以及所有引用的jar包(不包括jrejre后面会单独处理)。其中使用嵌入的jar文件选项可以将选中的一个jar文件直接打包到 .exe中去,这种对于只使用一个jar包的程序或者把所有的引用以及程序打包成一个jar文件的做法,比较好,这样classpath就不用设这了。当然你也可以即设置嵌入式 jar,又设置Classpath类路径。注意Classpath的先后顺序,一般将自己项目中的文件所在的jar包移动到最上面,这样一些资源文件就会以自己项目中的资源文件为准,如log4j.xml , zh_cn.property文件等。选择住类,即main函数所在的那个类,并填写好启动参数,即main函数所需要的参数,没有可以不填。

9、点击左侧导航菜单“jvm选择”,可以为应用程序指定一个相对目录下的jre 。这样应用程序不管拷贝到哪里,都可以直接运行注意选号路径后,路径信息直接就是相对路径,如果出现了绝对路径,则是上面某些步骤出现了问题)

10、JVM配置可以设置JVM的内存,启动参数等信息。

11、点击保存-编译。


12、在文件目录下就会生成一个.exe文件。


13、其中没有用的文件是jsmooth的工程文件,abc.jsmooth,图片文件(因为图片已经被打包到.exe中去了)。删除这2个文件,之后整个程序就已经做好了,无论将该程序拷到任意目录或者拷贝到没有jre的计算机上都能正常运行。其实如果程序中没有绑定jre,程序在运行时也会去找系统的jre的。



推荐阅读
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • Jmeter对RabbitMQ压力测试
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jmeter对RabbitMQ压力测试相关的知识,希望对你有一定的参考价值。Jm ... [详细]
  • android ... [详细]
author-avatar
1021365712_3a478e
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有