JAVA打包称JAR怎么带上JRE
ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法
ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法在Eclipse中,我们可以使用两种方法将引用了第三方JAR包的Java项目打包成JAR文件。
下面将详细介绍这两种方法。
方法一:使用Eclipse自带的导出功能1. 在Eclipse中,右键单击项目,选择"Export"。
2. 在弹出的对话框中,选择"Java"下的"JAR file",然后点击"Next"。
3. 在"JAR File Specification"页面上,选择要导出的项目以及要导出的资源;在"Export destination"中,指定导出的JAR文件的保存路径和文件名。
4. 在"JAR Packaging Options"页面上,选择"Export generated class files and resources",确保要导出的类文件和资源都被包含在JAR文件中。
5. 在"Select the export destination"页面上,选择"Package required libraries into generated JAR",这将会将所需的第三方JAR包也包含在生成的JAR文件中。
6. 点击"Finish"完成导出。
这种方法的优点是简单快捷,只需要几个简单的步骤就可以完成打包。
但是缺点是生成的JAR文件会将第三方JAR包也放在同一个目录下,可能导致文件夹混乱。
方法二:使用Apache Maven插件打包1. 首先,确保你的项目中存在pom.xml文件,它描述了项目的依赖关系和构建配置。
2. 打开Eclipse的"Terminal"窗口,或者使用其他的命令行工具。
java打jar包的几种方式详解
java打jar包的⼏种⽅式详解⼀、制作只含有字节码⽂件的jar包我们先来看只含有字节码⽂件,即只含有class⽂件的jar包怎么制作,这是最简单的形式1、最简单的jar包——直接输出hello最终⽣成的jar包结构META-INFHello.class⽅法步骤(1)⽤记事本写⼀个Hello.java的⽂件class Hello{public static void main(String[] agrs){System.out.println("hello");}}(2)⽤命令⾏进⼊到该⽬录下,编译这个⽂件 javac Hello.java(3)将编译后的Hello.class⽂件打成jar包 jar -cvf hello.jar Hello.class c表⽰要创建⼀个新的jar包,v表⽰创建的过程中在控制台输出创建过程的⼀些信息,f表⽰给⽣成的jar包命名(4)运⾏jar包 java -jar hello.jar 这时会报如下错误 hello.jar中没有主清单属性 添加Main-Class属性 ⽤压缩软件打开hello.jar,会发现⾥⾯多了⼀个META-INF⽂件夹,⾥⾯有⼀个MENIFEST.MF的⽂件,⽤记事本打开Manifest-Version: 1.0Created-By: 1.8.0_121 (Oracle Corporation) 在第三⾏的位置写⼊ Main-Class: Hello (注意冒号后⾯有⼀个空格,整个⽂件最后有⼀⾏空⾏),保存 再次运⾏ java -jar hello.jar ,此时成功在控制台看到 hello ,成功2、含有两个类的jar包——通过调⽤输出hello最终⽣成的jar包结构META-INFTom.classHello.class⽅法步骤(1)⽤记事本写⼀个Hello.java和⼀个Tom.java的⽂件 ⽬的是让Hello调⽤Tom的speak⽅法class Hello{public static void main(String[] agrs){Tom.speak();}}class Tom{public static void speak(){System.out.println("hello");}}(2)编译: javac Hello.java 此时Hello.java和Tom.java同时被编译,因为Hello中调⽤了Tom,在编译Hello的过程中发现还需要编译Tom(3)打jar包,这次我们换⼀种⽅式直接定义Main-Class。
java程序打包成exe(伪脱离JVM)
java程序打包成exe(伪脱离JVM)1前言exe4j是不可以把jre压缩到exe里面的,可以通过安装包的形式实现jre和java程序绑定,但是这样又多了一个安装的过程。
Excelsior JET虽然内置了自己的jre,但是想要在不安装java环境的电脑上运行,也是需要打包成安装程序的。
我们都知道java的运行是离不开jvm的,所以只能实现伪脱离jvm来运行。
简单的说就是自己带一个jvm但是将其隐藏起来,不对用户公开。
本文介绍一种相对而言比较让人满意的java程序打包成exe(伪脱离JVM)的方式,主要利用的工具是exe4j和winrar压缩工具,但是该方式也存在缺陷,就是如果程序包比较大,则自解压缩时间会比较久,看起来就像程序没有反应一样。
而且后面不能带参数运行。
2exe4j将java打包成exe程序2.1创建java示例程序包名可以自定义,目录结构也可以根据自己的需求来安排。
需要注意的一点是:jre一定要选择自己安装的jdk,因为后面要用到该jre(需要将jre拷贝出来)。
HelloWorld.java代码如下:注意:代码中的try-catch模块是必须的,这和我们最终要打包成console程序密切相关,否则就会出现一闪而逝的现象。
即TimeUnit.SECONDS.sleep(20)表示程序运行结束后,20s后退出(参数可以根据实际情况自己设置)。
备注:其他方式实现也可以,比如:Thread2.2java打包成jar在eclipse中,选中项目,右键,选择Exp ort…,选择JAR file,如下图所示:取消掉不需要的说明文件,并选择输出路径:点击Next,Next,然后选择主函数:点击Finish就成功生成JAR文件到我们指定的目录了。
2.3将JAR打包成EXE首先,找到我们在2.1中创建项目指定的jdk版本所对应的jre文件夹,并将其拷贝到我们生成的JAR所在的目录里。
JAR2EXE.ico是我们后面将要用到的图标。
java 打包过程及如何使用第三方jar包
Java 打可执行jar包及如何加入引用包的方法1.选择项目选择Export
2.选择java->JAR file
3.选择next
4.选择next
5.下一步next
6.然后点击Finish结束
7.引用包的使用在test.jar的目录中建lib(文件夹名字随意命名).把用到的第三方jar包
放进去。
目录如下
打开生成的test.jar用解压缩的方式打开
把META-INF下的MANIFEST.MF文件拉出来。
添加用到的引用包
Class-Path:后面一定要有一个空格。
多个包后面以至少一个空格分开。
后面也一定要有两个空行。
(一定要遵守该格式)
然后把文件导入到test.jar包里,即可打开test.jar且保持了原有的功能。
效果图:
这是利用Http-Client打开新浪微博的例子。
希望能帮到你。
精简出最小 jre收藏
精简出最小jre收藏基本知道思路了,我把写的程序打包成jar,能双击运行了,然后拷贝一个jre到程序目录下,具体是这样的,目录叫dict,dict下面有dict.jar、jre(目录),然后写了一个cmd脚本:@echo offset path=%cd%\jre\binjava -jar -verbose:class dict.jar >>class.txtpause这样程序使用的就是当前目录下的jre,程序运行后,最好把所有的功能使用一遍,这样输出了一个文件class.txt,里面有所有需要的class,其格式如下:[Opened D:\data\dict\jre\lib\rt.jar][Loaded ng.Object from D:\data\dict\jre\lib\rt.jar][Loaded java.io.Serializable from D:\data\dict\jre\lib\rt.jar][Loaded parable from D:\data\dict\jre\lib\rt.jar][Loaded ng.CharSequence from D:\data\dict\jre\lib\rt.jar][Loaded poundFileReader$FileEntry fromfile:/D:/data/dict/dict.jar]我们依照这个文件来裁剪rt.jar:首先在utralEdit中进行一些处理,去掉所有不是rt.jar中的class的行,去掉from后面的,去掉loaded等无关项目,再把“.”替换成“/”.这个可以利用正则表达式等轻松处理。
处理完后得到的文件类似如下格式:java/lang/Objectjava/io/Serializablejava/lang/Comparablejava/lang/CharSequencejava/lang/String然后写一个脚本或者程序处理,将rt中需要的的class拷贝到另一个对应的文件夹rt1,我用java写了一个,没有时间仔细改,但能完成人物了。
如何将一个java程序或项目打包成jar与exe文件
一、先将一个java 程序或项目打包成jar 文件。
1.先在Myeclipses 下添加一个插件 fat jar (1)先把压缩文件解压,将net.sf.fjep.fatjar_0.0.31.jar 放置在你的Myeclipse 的安装目录下。
此为我的Myeclipse 安装目录路径。
如图所示(2)关闭你的Myeclipse ,重新启动。
(3)右键点击你的项目工程名,查看是否有一个 +buile fat jar 选项。
若有,表明完成上面两部,点击next点击finish,将在你指定位置,生成一个可执行jar文件。
查看是否正常。
可能出现的问题:1.所引入的数据库jar包,导入不正确,无法连接数据库。
2.项目中可能添加的图片,在Jar文件中不能正常显示。
解决第二个问题。
如图所示我的项目内容1.在src目录下新建一个Folder 目录文件,将你之前的图片放置进去。
2.修改代码部分:将之前的代码修改为如上所示写法。
整体修改完毕后,重新对项目进行打包操作。
并做测试检查二、将一个可运行的jar文件做成exe文件。
1.先安装exe4j软件。
2.运行软件。
注册窗体进行软件注册用户名,公司名称,随便填写。
注册完毕,回到主窗体。
Next直接点Next第二步我们选择“JAR in EXE mode” 就是选择我们已经有制作好的jar文件。
我的是“桌面\project\”. NEXT由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name写你将要生成的.exe文件的名字,Icon File可以选择生成文件的图标。
第5步,先别管上面的,先在下面单击绿色的“+”号。
在弹出的窗口中点Archive,然后找到起初已经做好的PetDemo_fat.jar文件,"OK"后返回。
在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类。
java-jar命令用法
java-jar命令用法java -jar命令是Java平台提供的用于运行独立的Java应用程序的命令。
它可以用于执行任何已经打包成可执行JAR文件的Java应用程序。
在本文中,我们将详细介绍java -jar命令的用法,包括常用选项和示例。
1.语法- 选项:用于指定Java虚拟机的选项,例如-Xmx、-Xms等等,以及其他类似于设置系统属性的选项。
- <jar文件>:要执行的JAR文件的路径。
可以是绝对路径或相对路径。
- 参数:传递给JAR文件的命令行参数。
这些参数将被传递给JAR文件内的主类的main方法。
2.常用选项以下是常见的java -jar命令的选项:- -cp <class search path of directories and zip/jar files>:设置类路径,用于指定Java类的路径,包括目录和JAR文件。
- -Xmx<size>:设置JVM堆的最大大小,例如-Xmx512m表示将JVM的最大堆大小设置为512兆字节。
- -Xms<size>:设置JVM堆的初始大小,例如-Xms256m表示将JVM的初始堆大小设置为256兆字节。
- -Xss<size>:设置线程栈的大小,例如-Xss1m表示将线程栈的大小设置为1兆字节。
- -D<name>=<value>:设置系统属性的值,例如-Djava.awt.headless=true表示将Java的头部设置为无头模式。
- -verbose:class:打印有关类加载器的详细信息,包括类的加载和卸载。
- -verbose:gc:打印有关垃圾回收的详细信息,包括垃圾回收的开始和结束。
- -version:显示Java运行时环境的版本。
3.示例以下是一些java -jar命令的示例:- java -jar MyApp.jar:运行名为MyApp.jar的JAR文件。
IDEA自己编写自定义jar包再导入其他项目并使用
IDEA自己编写自定义jar包再导入其他项目并使用编写自定义的JAR包并将其导入其他项目是一个非常常见和有用的开发技巧。
通过这种方式,我们可以将一些通用的功能或库封装到一个独立的JAR包中,以便在其他项目中重复使用,提高代码的可复用性和可维护性。
编写自定义的JAR包可以分为以下几个步骤:1. 创建一个新的Java项目:首先,我们需要创建一个新的Java项目,作为我们自定义JAR包的开发环境。
可以使用任何Java开发环境,如Eclipse、IntelliJ IDEA等。
2. 实现功能代码:在创建的Java项目中,实现我们想要封装为JAR 包的功能代码。
这个功能可以是任何自定义的功能,如加密解密算法、文件操作、网络通信等。
在实现功能代码时,需要注意代码的可重用性和可扩展性。
3. 打包为JAR文件:当功能代码实现完成后,我们需要将其打包为一个JAR文件。
在大多数Java开发环境中,可以使用内置的打包工具来生成JAR文件。
在Eclipse中,可以通过右键单击项目,选择"Export",然后选择"JAR file"来创建JAR文件。
4. 导入JAR包:现在我们已经有了一个自定义的JAR文件,可以将其导入到其他项目中使用。
要导入JAR包,可以将其复制到其他项目的类路径下,或者在项目构建工具(如Maven或Gradle)的配置文件中添加JAR包的依赖。
5.使用JAR包:一旦JAR包被成功导入到其他项目中,我们可以在项目中使用JAR包提供的功能。
这可以通过导入JAR包中的类或调用JAR包中的方法来实现。
具体使用方法取决于JAR包中的功能和API设计。
在编写自定义JAR包时,还需要注意以下几点:1.设计良好的API:为了让其他开发人员能够轻松使用我们的JAR包,我们需要设计良好的API。
这包括清晰的类和方法命名、合理的参数和返回值设计、文档注释等。
2. 版本管理:为了方便后续的维护和升级,建议对JAR包进行版本管理。
(原创)java程序打包jre以及制作安装包
3. 再次运行这个 jar 文件,发现已经包含了图片等文件
4.我们肯定不能让用户这样去运行我们的程序,所以必须要转成可以双击运行的方式。
四、将 jar 文件转换为可以直接双击运行的 exe 文件
1. 将 jar 文件转为 exe 文件有一个很好的软件叫做
/zh/jar2exe/free.htm 我们下载绿色版本
如图
双击 Kejian.exe,看一下效果:
16.虽然程序已经完成,但是我们不可能会给用户一个文件夹,然后让用户复制,复制好以
后双击 exe 去运行这个程序,所以接下来我们还要制作安装程序包。
五、制作程序安装包
1. 制作安装包需要的软件名字叫做 件管家搜索下载,如图:
javaSwing打包成exe可安装文件(可在无jdk环境机器上运行)
先用exe4j(此处用的是4.4.4版本)将jar打包成exe可执行文件,之后用Inno Setup(此处是5.5版本)将exe文件及jre打包成可安装文件,使其可在没有java环境的机器上运行1、先将所用到的系统资源放到一个资源文件夹中,如数据库、图片、声音文件、jre等等2、将系统制作成jar包,用fatjar打包工具将系统打包,选择导出路径,选择改程序的Main 方法(如图一红框),点击next选择要导出的资源,之后到finish完成打包,将打出的jar包放到资源文件夹中(便于其后打包成可安装文件)图一3、运行exe4j软件,点击next到下一步,选择第一项Regular mod,后点击next进行下一步(如图二),上面输入工程名,可随意写,下面选择打包后的exe文件的输出路径,完成后点击next进行下一步图二4、如图三,先选择执行方式,默认是图形方式GUI application,Executable name写打包后的exe文件名称,Icon File 选择生成文件的ico图示,后面三个根据需要选择,完成后点击next进行下一步图三5、点击右边的“+”号,在弹出框中选择Archive,并选择先前导出的jar包(如图五),选中后点击OK即可,之后选择改程序的主方法,(如图六),完成后点击next进入第6步图五图六6、填入最低jre版本,最高版本可不填,选择Advanced Options 下的Search sequence选择jre,由于我们要在没有安装jre的机器上运行,故需要将jdk环境动态打包到系统中,如图七,将列表中所有项目移除,然后点击右边的“+”选择刚才在资源文件夹中放置的jre文件夹,如图八,点击OK选择,之后的效果如图九所示,点击next进入图七图八图九再从图中单击advanced options,并选择preferred VM,选择Client Hotspot VM(如图十),之后点击next进入第7步图十7、配置Splash screen ,如果不需要则选择No splash screen 即可,之后一直点击next至finish,如果出现如图十一的界面,则说明已经导出exe文件现在已经完成了exe文件的打包,此程序可在本机上直接运行,但如果想让其在没有jdk 环境的机器上运行,那么还需要利用Inno Setup 将exe文件及jre打包,下面进行这个步骤,此处用的是Inno Setup5.51、运行Inno Setup 编译器,选择脚本向导点确定进入如下界面2、点击下一步进入如下界面,输入个项信息后点击下一步3、维护下图中各项内容后点击下一步4、首先选择程序执行文件,即上面用exe4j导出的exe文件,然后点击添加文件夹,选择我们做好的资源文件夹,务必将所有需要的东西都放进去,完成后显示下图所示界面,然后点击下一步5、根据自己的需要,选择对应的项目,如下图所示,完成后继续点击下一步6、应用程序文档及安装语言的设置在此处就不作介绍了,直接进入编译设置,如下图,将个个信息维护完毕后连续点击下一步直至完成7、系统会出现如下图所示的界面,选择是进行脚本编译8、在编译完成后即可得到一个可安装文件,其后不必说了,直接安装使用。
java中安装jdk和jre(简单了解)
java中安装jdk和jre(简单了解)快速了解:JDK是整个Java的核⼼,包括了⼀个Java运⾏时环境(JRE)、Java⼯具以及基本的Java类库。
JDK是Sun公司免费提供给软件⼯程师开发java应⽤程序⼀套开发套件。
简单的说JDK(Java Development Kit)有很多帮助开发⼈员进⾏java开发时所⽤到的⼯具,包括编译、调试、运⾏等等命令。
JRE(Java Run )就是在运⾏java应⽤程序时提供⽀持的环境。
JRE在⼀些操作系统中已经预装了,但是JDK却并不⼀定有安装,毕竟不是个个都是java开发⼈员。
所以我们现在要成为java⼯程师,⾸先得先安装并设置好开发环境。
快速配置:1、在Path编辑后⾯加⼊:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (注意如果加⼊前最后⾯没有;要加⼊;)2、进⾏新建⼀个CLASSPATH:变量名字:CLASSPATH 变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar3、进⾏新建JAVA_HOME:变量名:JAVA_HOME 变量值:本机jdk的路径,⽐如我:C:\Program Files\Java\jdk-10.0.2轻松了解以及详细配置什么是jdk?JDK是学好Java的第⼀步。
不管是你要学习java编程,还是要搭建jsp web开发环境,或者是android开发环境都离不开它。
jdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的⼯具包。
也可以说jdk是java的sdk。
先来说⼀下jdk的版本,⼀共有三种,标准版,企业版,移动设备版。
⾸先我们进⼊官⽹进⾏查看第⼀进⾏下载如下:或者百度下载:步骤⼀:当我们没有在主页时候,可以单击oracle进⼊主页步骤⼆:进⾏下载这个Trials and Downloads是测试和下载的意思第三步:进⾏进⼊查找java中的jdk第四步:找下载地址第五步进⼊下载:下载完成第⼆进⾏安装:这⾥有安装提⽰,只需要点下⼀步即可完成后进⾏cmd查询 win+R键进⾏运⾏(win键在Ctrl与Alt中间)进⾏cmd进⼊后输⼊java回车执⾏后会出现很多东西,如下图出现这个表⽰已经安装完成删除操作如果安装过的,可以到系统⾥⾯卸载需要卸载两个即可如图:删除完成再进⾏安装即可;进⾏配置环境:第⼀步:我的电脑右键点击属性第⼆步:⾼级系统设置->环境变量->以下针对没有配置过环境变量的系统:1、在Path编辑后⾯加⼊:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意如果加⼊前最后⾯没有;要加⼊;)⾸先我们需要查找Path->编辑(有的系统可能有两种格式)第⼀种格式:第⼆种格式:(两种格式都是差不多,可以根据系统进⾏配置) %JAVA_HOME%\bin%JAVA_HOME%\jre\bin2、进⾏新建⼀个CLASSPATH变量名字:CLASSPATH变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar3、进⾏新建JAVA_HOME变量名:JAVA_HOME变量值是不⼀样的,根据你按照时候进⾏查看(推荐点击浏览⽬录,然后进⼊电脑的系统盘[⼀般为C盘],进⼊后看Program Files这个⽂件下,进⼊java⽂件下,选择jdk⽂件夹即可)也可以直接进⼊系统盘查找jdk复制路径放到变量值即可我的根⽬录如下:C:\Program Files\Java\jdk-10.0.2最后进⾏测试:进⼊cmd命令输⼊javac出现该信息说明已经配置成功提⽰:eclipse出现an error has occurred.see the loh file有些安装后出现问题如图是不是eclipse版本太新引起的,我在更新之后也出现了这样的问题,解决⽅法:1,打开eclipse安装⽬录下的eclipse.ini⽂件;2,打开的⽂本⽂件最后添加⼀⾏--add-modules=ALL-SYSTEM3,保存重新打开Eclipse。
在Eclipse中将Java项目打包为jar
在Eclipse中将Java项目打包为jar方法一:如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自己自定义配置文件MANIFEST.MF ,内容示例如下:Manifest-Version: 1.0Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jarlib\log4j-1.2.13.jar lib\mysql-connector-java-3.1.13-bin.jarMain-Class: src.YourMainClassName其中的Class-Paht就指定了外来jar包的位置。
请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下建立一个lib文件夹,并将相关的jar包放在里面。
否则将会出现Exception in thread "main" ng.NoClassDefFoundError的错误。
最后介绍一下使用Eclipse制作jar包的过程吧:1. 首先在Eclipse中打开项目,右键点击项目,选择“Export”;2. 选择Java/JAR file,Next;3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间;这里有几个选项:∙Export generated class files and resources 表示只导出生成的.class 文件和其他资源文件∙Export all output folders for checked projects 表示导出选中项目的所有文件夹∙Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了∙Export refactorings for checked projects 把一些重构的信息文件也包含进去在Select the export destination中选择导出的jar的路径,Next4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class 文件。
用java–jar命令运行Jar包
现在的问题是:如何把jar做成可以运行的包?
清单文件和主类条目 在大多数jar文件中,在目录META-INF里有个叫MANIFEST.MF的文件。在该文件中,有一个叫Main-Class的特殊条目,它说明了java - jar命令执行的类。
问题是你必须正确地在清单文件中加入这个特殊的条目――它必须是在特定的位置和特定的格式。可是,好多人不喜欢修改配置文件。 用API修改改配置 从java1.2之后,一个叫java.util.jar的包可以操作jar文件(注:它架构在java.util.zip包之上)。Jar包能让你通过Manifest类很容易地操作专 门的清单文件。
//枚举所有条目 JarEntry entry; while ((entry = jarIn.getNextJarEntry()) != null) {
//排除旧jar文件中的清单文件 if ("META-INF/MANIFEST.MF".equals(entry.getName())) continue; //把条目写到输出jar文件中去 jarOut.putNextEntry(entry);
int read;
while ((read = jarIn.read(buf)) != -1) {
jarOut.write(buf, 0, read);
}
jarOut.closeEntry();
JAVA运行环境(JRE)安装
2.6 Java运行环境(JRE)安装
(一)安装目的
贸易收付汇核查系统中的打印功能使用了润乾报表,要正常使用支持打印功能的插件,需要在用户计算机上安装Java运行环境。
Java运行环境只需要安装一次,打印功能即可以使用。
(二)安装方法
1、登录系统后选择系统中的一个查询功能,例如:
用户登录系统后选择【企业信息查询】→【进口信息查询】→【进口付汇信息查询】,如图2-17:
图2-17
2、点击“打印”按钮,会弹出以下安装窗口,点击“安装”。
如图2-18:
图2-18
3、点击“安装”会弹出许可证协议窗口,如图2-19:
图2-19
4、点击按钮“是”,弹出如图2-20窗口:
图2-20
5、选择“典型”安装,点击“下一步”按钮开始安装,安装完成会弹出如图2-21窗口(也可能不弹出,只要能打印就正常):
图2-21
6、选择“重新启动计算机”,点击“完成”按钮,重新启动计算机,Java运行环境安装完成。
java+swing打包jar成exe
java打包jar成exe并动态绑定jre再打包成安装注:以下所有步骤的前提是,把jar文件,ico图示(pngImage文件夹),第三方jar 包(lib活页夹),jre活页夹,放到同一个活页夹中。
本例放在exe4j Install4j Inno setup活页夹下,如图0如图0首先,我们选用exe4j把jar执行文件转成exe文件exe4j.exe下载地址: /download/exe4j/files.html 程序安装不在赘述:它要求系统有1.5版本以上的JDK,点Download在线下载,如果你的机器上有JDK,点Locate找到你机器上已安装的JDK目录下/bin/java.exe就可以进行安装了。
下面就使用exe4j转换jar为exe的过程详细说明一下:第1步,默认即可。
直接下一步第2步,如果已经有制作好的jar檔,则下面一个"JAR in EXE"。
对于打包jar檔,在eclipse中右击项目选导出即可,不会制作jar檔可以给我留言如图1第3步,上面是项目名称,可随便填写,下面一个写出你想要将打包后的exe文件输出的目录:如图2第4步,由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name 写你将要生成的exe檔的名字,Icon File可以选择生成文件的图示如图3第5步,首先,单击绿色的"+"号,在弹出的窗口中点Archive,然后找到起初已经做好的jar檔,如图4,"OK"后返回,在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类,如图5,这一步即算完成:如图4如图5第6步,一般的应该程序都要带第三方jar檔,同步骤5一样即可,结果如图6.第7步,你系统的JRE版本,上面填个1.5,下面不填也行,如图7:如图7当然,这样配置的程序只能在安装有JRE的机器上执行,发布时总要考虑的问题就是用户是否有能力在自己机器上安装JRE,总不能发布一个程序还要用户自己安装个JRE吧,下面我就介绍如何将JDK环境变量动态打包到exe 中,在这里单击advanced options(图7中有,如图8),选择search sequence。
exe4j打包(自带jre)
Exe4j把jar打成exe
运行exe4j的程序在bin\exe4j.exe 1 welcome界面
2
选择jar in exe mode
3
(1):application name :
(2) 输出路径(打成exe后exe的输出路径)
4
(1):运行exe的类型:GUI,console,service
(2)exe的文件名
(3)选择exe文件的图标
5
(1):加入jar包(包括程序打成后的jar和程序中要引用的jar)
(2):选择main函数
6
(1)java版本支持
(2)设置jre(关键) (2)首选虚拟机选择
6.1
6.2
进去search sequence后,里面有search windows registry Environment variable java_home ,environment variable jdk_home 3选项,全部删除后,添加(1)jre类型,<最好是把jre拷贝出来放到输出路径里>
(2) jre
(3) 选择jdk目录下面的jre文件夹
7,选择客户端的vm
8,
预览,默认就行了
9,
就生成exe文件了,
生成的文件目录:(拷贝它的上级目录,可以放置别的机器上(无jre
的环境),但jre必须exe在同一个目录下)
(2)保存exe4j当前的打包环境.。
jpackage用法
jpackage用法`jpackage` 是JDK 14 中引入的一个工具,用于将Java 应用程序打包成本地安装程序(native package)或本地运行时映像(native runtime image)。
这使得Java 应用程序更容易地在用户机器上安装和运行,而无需预先安装Java 运行时环境(JRE)。
以下是`jpackage` 的基本用法:1. 创建模块化的Java 应用程序确保你的Java 应用程序是模块化的,使用Java 9+ 的模块系统。
创建一个包含`module-info.java` 文件的模块。
2. 编译和打包应用程序使用`javac` 编译你的应用程序,并使用`jar` 命令打包成JAR 文件。
确保包含`module-info.class` 在JAR 文件中。
```bashjavac -d out --module-source-path src -m your.modulejar --create --file=yourapp.jar -C out/your.module .```3. 使用`jpackage` 打包应用程序```bashjpackage --name YourAppName \--input ./out/your.module \--main-jar yourapp.jar \--main-class your.module/YourMainClass \--type app-image```其中:- `--name`:指定应用程序的名称。
- `--input`:指定应用程序模块的路径。
- `--main-jar`:指定主JAR 文件。
- `--main-class`:指定应用程序的主类。
-`--type`:指定打包的类型,可以是`app-image`(创建本地运行时映像)或`exe`(创建本地安装程序)。
4. 运行或安装应用程序#本地运行时映像:```bash./YourAppName/bin/YourMainClass```#本地安装程序(Windows):双击生成的`.exe` 安装文件,并按照安装程序的指导进行安装。
java -jar 执行 方法
Java是一种广泛应用的编程语言,其灵活性和强大的功能使其在软件开发领域得到了广泛的运用。
在Java编程中,我们常常会用到java -jar命令来执行一些特定的方法或程序。
本文将从执行方法的基本语法、常见问题及解决方法等方面进行介绍,以帮助读者更好地理解和应用java -jar命令。
一、java -jar执行方法的基本语法在Java编程中,我们可以使用java -jar命令来执行一个打包成jar包的程序或方法。
其基本语法如下:java -jar <jar文件名> [参数]其中,<jar文件名>表示要执行的jar包文件名,参数是可选的,可以在执行方法时传入给程序。
在执行java -jar命令时,需要在命令行中切换到jar包所在的目录,然后输入以上命令即可执行指定的程序或方法。
二、java -jar执行方法的常见问题及解决方法在使用java -jar命令执行方法时,有时会遇到一些常见的问题,下面将介绍一些常见问题及其解决方法:1. 无法找到或加载主类当执行java -jar命令时,如果出现"无法找到或加载主类"的错误提示,这通常是由于指定的jar包中的MANIFEST文件中未正确指定主类名所致。
解决方法是打开MANIFEST文件并检查M本人n-Class项是否正确指定了主类名,确保没有拼写错误。
2. 缺少依赖库有时在执行java -jar命令时,会出现"找不到类xxx"的错误提示,这通常是由于jar包所需的依赖库未正确引入或缺失所致。
解决方法是在编译jar包时将所需的依赖库一起打包进去,或者将依赖库放在与jar包相同的目录下。
3. 参数传递错误当执行java -jar命令需要传递参数给程序时,有时会因参数传递错误而导致程序出现异常或错误。
解决方法是检查传递的参数是否符合程序要求,并且要注意参数的顺序和格式是否正确。
三、java -jar执行方法的注意事项在使用java -jar命令执行方法时,还需要注意一些事项,以确保程序能够正常执行:1. 确保jar包正确打包在执行java -jar命令时,需要确保jar包已经正确打包,并且MANIFEST文件中正确指定了主类名和依赖库。
java-jar启动设置参数的三种方式
取值:System.getProperty("propName")
2.参数直接跟在命令后面
eg:java -jar xxx.jar processType=1 processType2=2
取值:参数就是jar包里主启动类中main方法的args参数,按顺序来
2. 如果在宿主机可以使用: 1. docker ps -a --no-trunc | grep id
3.springboot的方式,--key=value方式
eg:java -jar xxx.jar --xxx=test
取值:spring的@value("${xxx}")
来源:
其他: 查看完整docker启动命令
1. 如果在容器内部可以使用: 1. ps aux | grep java 2. ps -fe
网络错误503请刷新页面重试持续报错请尝试更换浏览器或网络环境
java-jar启 动 设 置 参 数 的 三 种 方 式
java -jar 参数前后位置说明 springboot项目启动的时候可以直接使用java -jar xxx.jar这样。下面说说参数的一些讲究
1.-DpropName=propValue的形式携带,要放在-jar参数前面
一、jre插件的安装
一、jre插件的安装。
第一步:在卫生局的网站下载jre插件,保存到本地硬盘。
如图所示:第二步:双击图标运行安装程序。
二、打印机的安装。
出生证打印要求安装统一型号的打印机(爱普生LQ-106KF)。
如图:第一步:取出打印机,去除包装,除去所有的保护材料。
详细说明见LQ-106KF针式打印机的《首先阅读》第二步:将打印机连接到计算机上。
详细说明见LQ-106KF针式打印机的《首先阅读》第三步:连接电源线。
详细说明见LQ-106KF针式打印机的《首先阅读》第四步:安装打印机。
详细说明见LQ-106KF针式打印机的《首先阅读》纸张的厚度调整到0的位置。
放进打印头的下面。
二、打印机驱动程序的安装。
两种方式:第一种(按照光盘的的屏幕指导提示安装)略。
第二种:手动安装第一步:开始菜单→设置→打印机和传真第二步:双击“添加打印机”第三步:把打印机的驱动光盘放入CD-ROM,点击“从磁盘安装”按钮。
三、测试打印出生证明。
第一步:登录妇幼系统。
用户名:test密码:1第二步:进入“新生儿保健” 证明特殊管理第三步:在列表中选择一行,点击打印按钮。
第四步:点击按钮“爱普生LQ106”,出现预览画面效果。
第五步:点击工具栏上的“”打印按钮,进入页面设置画面。
第六步:点击“设置”按钮,按下图设置页边距的值。
第七步:点击确定,回到前画面。
注意:页面设置只设置一次就可以,以后在前画面直接点击打印就可以。
第八步:点击“打印按钮”,弹出“安全警告提示”对话框。
第九步:把测试用的出生证明送入打印后,点击确定。
挡板定位到0刻度的位置。
复印与原件规格相同的出生证复印件。
第十部:确认纸张是否上好,如果是正式打印请确认出生证的号码和屏幕中自动生成的号码是否一致,并确认是否录入的身份证号码等信息准确无误后。
再点击打印按钮。
第十一步:检查打印出的出生证明是否有明显的串行,偏离;如果有问题请联络相关信息人员。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
让java程序带上精简的jre(附工具)java是跨平台的东西,但有的时候我们不需要它去跨平台,我们希望能想c++做的程序一样,编码和简单处理后能够在系统运行。
这次的项目是要放到classmate pc上,这款机器是为学生订做的,系统资源很有限,一个jre1.5就70多M,放在上面肯定是不行的。
于是我找了一些相关的资料,提供链接如下:如何制作最小的RCP程序压缩包(包含JRE)java程序发布之jre篇基本知道思路了,我把写的程序打包成jar,能双击运行了,然后拷贝一个jre到程序目录下,具体是这样的,目录叫dict,dict下面有dict.jar、jre(目录),然后写了一个cmd脚本:@echo offset path=%cd%\jre\binjava -jar -verbose:class dict.jar >>class.txtpause这样程序使用的就是当前目录下的jre,程序运行后,最好把所有的功能使用一遍,这样输出了一个文件class.txt,里面有所有需要的class,其格式如下:[Opened D:\data\dict\jre\lib\rt.jar][Loaded ng.Object from D:\data\dict\jre\lib\rt.jar][Loaded java.io.Serializable from D:\data\dict\jre\lib\rt.jar][Loaded parable from D:\data\dict\jre\lib\rt.jar][Loaded ng.CharSequence from D:\data\dict\jre\lib\rt.jar][Loaded poundFileReader$FileEntry from file:/D:/data/dict/dict.jar]我们依照这个文件来裁剪rt.jar:首先在utralEdit中进行一些处理,去掉所有不是rt.jar中的class的行,去掉from后面的,去掉loaded 等无关项目,再把“.”替换成“/”.这个可以利用正则表达式等轻松处理。
处理完后得到的文件类似如下格式:java/lang/Objectjava/io/Serializablejava/lang/Comparablejava/lang/CharSequencejava/lang/String然后写一个脚本或者程序处理,将rt中需要的的class拷贝到另一个对应的文件夹rt1,我用java写了一个,没有时间仔细改,但能完成人物了。
代码如下:import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.LineNumberReader;public class ReduceRt {//文件拷贝public static boolean copy(String file1,String file2){try //must try and catch,otherwide will compile error{// instance the File as file_in and file_outjava.io.File file_in=new java.io.File(file1);java.io.File file_out=new java.io.File(file2);FileInputStream in1=new FileInputStream(file_in);FileOutputStream out1=new FileOutputStream(file_out);byte[] bytes=new byte[1024];int c;while((c=in1.read(bytes))!=-1)out1.write(bytes,0,c);in1.close();out1.close();return(true); //if success then return true}catch(Exception e){System.out.println("Error!");return(false); //if fail then return false}}//读取路径,copypublic static int dealClass(String needfile ,String sdir,String odir) throws IOException {int sn = 0; //成功个数File usedclass = new File(needfile);if(usedclass.canRead()){String line = null;LineNumberReader reader = new LineNumberReader(new InputStreamReader(newFileInputStream(usedclass),"UTF-8"));while((line = reader.readLine())!=null){line = line.trim();int dirpos =stIndexOf("/");if(dirpos>0){String dir = odir+ line.substring(0,dirpos);File fdir = new File(dir);if(!fdir.exists())fdir.mkdirs();String sf = sdir + line + ".class";String of = odir + line + ".class";boolean copy_ok=copy(sf.trim(),of.trim());if(copy_ok)sn++;else{System.out.println(line);}}}}return sn;}public static void main(String[] args){String needfile = "usedclass.txt";String sdir = "./rt/";String odir = "./rt1/";try {int sn = dealClass(needfile,sdir,odir);System.out.print(sn);} catch (IOException e) {// TODO 自动生成 catch 块e.printStackTrace();}}}我裁剪出来的rt大小为500多k。
然后将rt1里面的目录和文件打包成rt.zip,改名为rt.jar,然后替换原来的rt.jar。
具体的步骤可以参考上面提到的那两篇文章。
#######################如何制作最小的RCP程序压缩包(包含JRE)Java开发程序,发布时总要考虑的问题就是怎么在使用者的机器上装好JRE。
要考虑的问题很多:使用者有没有能力独自安装JRE,使用者已有的 JRE 和我们需要的版本是不是一致,会不会出现版本问题,等等。
使用.NET要考虑的问题就少些。
现在.NET CLR似乎已经很普及了,看好多D版的 Win XP都会自己安装最新的.NET CLR,而且似乎它的安装界面也比JRE友好些。
彻底解决安装JRE的问题的方案,就是让我们的应用程序自己背着JRE!这样,我们的程序就像传统的Win32应用程序一样,双击就可以执行,不用管所在的机器上是否有JRE,是什么版本的JRE,无论怎样,我有我自己的!要做到这一点,其实非常容易。
王森在他的《Java深度历险》(强力推荐这本书,内容少而精)的第一章就解释了JDK,JRE,JVM之间的关系。
解释了我们执行java.exe时发生的事情。
其中提到,java.exe依照一套逻辑来寻找可以用的JRE,首先查找自己所在的目录下有没有 JRE(据王森讲这样说不确切,我没有JDK全部的源代码,在此无从考证);其次查找自己的父目录下有没有JRE;最后才是查询Windows的注册表。
通常我们在安装好了JRE的机器上的任何一个目录下都可以执行java.exe。
因为它在安装时被复制到了windows的system32目录下,而后者无论如何都会在path环境变量中。
这个java.exe最终必然会访问注册表来确定真正的JRE的所在地。
若我们要求每一个应用程序都自带JRE,必然不能走这条路。
但,逻辑的第二条讲,java.exe会在它的父目录下查找JRE,解决方案就在这一条中。
假设我们的应用程序打好了包,叫做 MyApp.jar,放在MyApp的目录下。
我们在MyApp目录下,可以执行java ?jar MyApp.jar来运行我们的程序。
我们安装的是 JRE 1.5,在C:\Program Files\Java\jre1.5.0下。
现在,我们只需要简单的将jre1.5.0目录搬到MyApp目录下,顺便改个容易写的名字比如叫jre。
现在,我们的应用程序就象这样:MyAppMyApp.jarJreJre1.5.0目录下的全部内容Java.exe 就在jre目录下的bin目录中。
根据第二条逻辑,java.exe会在它的父目录中查找jre,实验证实,它会查找lib目录,而lib就在jre目录下。
因此,这样java.exe就会确定jre的所在然后正常执行java程序,不会去管我们是否安装了JRE,注册表中是否有注册项这些杂事了。
试一下,在命令行下进入MyApp的目录下,假设它在C盘,将path指向MyApp下的JRE:set path=c:\MyApp\jre\bin然后运行:java ?verbose ?jar MyApp.jar加上verbose参数以确定我们确实用了这一套被搬出了家的JRE。
程序可以运行,并且在命令行输出的前几行,可以看到:[Opened C:\MyApp\jre\lib\rt.jar][Opened C:\MyApp\jre\lib\jsse.jar][Opened C:\MyApp\jre\lib\jce.jar][Opened C:\MyApp\jre\lib\charsets.jar]因此程序读取的确实是它的私有的JRE。