JAVA 如何打JAR包
如何打jar包分类:javajar 应用先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar -help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名...选项:-c 创建新的存档-t 列出存档内容的列表-x 展开存档中的命名的(或所有的〕文件-u 更新已存在的存档-v 生成详细输出到标准输出上-f 指定存档文件名-m 包含来自标明文件的标明信息-0 只存储方式;未用ZIP压缩格式-M 不产生所有项的清单(manifest〕文件-i 为指定的jar文件产生索引信息-C 改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和'f'标志指定的相同顺序.示例1:将两个class文件存档到一个名为'classes.jar' 的存档文件中:jar cvf classes.jar Foo.class Bar.class示例2:用一个存在的清单(manifest)文件'mymanifest' 将foo/ 目录下的所有文件存档到一个名为'classes.jar' 的存档文件中:jar cvfm classes.jar mymanifest -C foo/ .来个小例子试试看:我们只有一个HelloWorld,如下:public class HelloWorld{public static void main(String[] args){System.out.println("Hi, Hello World!");}}我将这个java文件存到C盘跟目录下,ok,接下来,在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错hello.jar 。
基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。
紧接着我们看看如何运行我们的jar包。
在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看:Manifest-Version: 1.0Created-By: 1.4.2 (Sun Microsystems Inc.)就是这样。
这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行)。
这个就是我们之前写的那个类,也就是我们的入口类。
也即,Manifest-Version: 1.0Created-By: 1.4.2 (Sun Microsystems Inc.)Main-Class: HelloWorld接下来,我们在命令提示符里执行:jar umf MANIFEST.MF app.jar这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新。
你不妨可以再进去看看是不是添上了Main-Class: HelloWorld这一句。
Ok,这个最后的一步了,来验证我们做的一切,在命令提示符中输入:java -jar hello.jar(执行)出现了什么,――Hi, Hello World!我们再来看看jar文件在tomcat中发布,注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:先准备我们要打包的资源。
找到存放tomcat的webapps目录,进到其中,新建一个文件夹,这里命名为hello,再进去新建WEB-INF文件夹,再进去新建classes文件夹,此时我们也将我们唯一的servlet,HelloWorld.java放到这里,在与classes目录同级下建立一文件web.xml。
Ok,目前我们初步建立了一个简单的web应用。
在命令提示符下进到先前创制的hello目录下,执行jar cvf hello.war * ,我们便得到hello.war。
将它拷贝至webapps目录下,ok,来看最后一步,打开tomcat的目录conf中的server.xml,加入:reloadable="true"/>大功告成!运行它,启动tomcat,后在浏览器中输入http://localhost:8080/hello/HelloWorld,有了吗?好了,就这么多,希望对你有点帮助。
补充:############jar基本操作:############1. 创建jar文件jar cf jar-file input-file(s)c---want to Create a JAR file.f---want the output to go to a file rather than to stdout.eg: 1)jar cf myjar.jar query_maintain_insert.htm2)jar cvf myjar.jar query_maintain_insert.htmv---Produces verbose(详细的) output.3)jar cvf myjar.jar query_maintain_insert.htm mydirectory4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory0---don't want the JAR file to be compressed.5)jar cmf MANIFEST.MF myjar.jar yahh.txtm---Used to include manifest information from an existing manifest file. 6)jar cMf MANIFEST.MF myjar.jar yahh.txtM---the default manifest file should not be produced.7)jar cvf myjar.jar **---create all contents in current directory.2. 察看jar文件jar tf jar-filet---want to view the Table of contents of the JAR file.eg: 1)jar vft yahh.jarv---Produces verbose(详细的) output.3. 提取jar文件jar xf jar-file [archived-file(s)]x---want to extract files from the JAR archive.eg: 1)jar xf yahh.jar yahh.txt(仅提取文件yahh.txt)2)jar xf yahh.jar alex/yahhalex.txt(仅提取目录alex下的文件yahhalex.txt)3)jar xf yahh.jar(提取该jar包中的所有文件或目录)4. 修改Manifest文件jar cmf manifest-addition jar-file input-file(s)m---Used to include manifest information from an existing manifest file. 5. 更新jar文件jar uf jar-file input-file(s)u---want to update an existing JAR file.-->生成exe:<--第一種:在jbuilder中:首先你要保证Run菜单-->Run Project能顺利运行然后Wizards菜单-->Native Executable Builder选中Compress the contents of the archive(产生jar文件的话)Next-->Next-->选中Always include all classes and resources再Next-->Next-->Next选中Windows GUI"exe"(产生EXE文件的话)-->Finish再在项目的文件列表中的Native Executable右击-->Make就可以了第二種:在cmd 下生成jar文件abc.txt内容如下:Manifest-Version: 1.0Main-Class: main-class-name(回車)在cmd下:javac *.javajar cvfm abc.jar abc.txt *.class示例——生成能通过鼠标双击就执行的.jar文件一、编写Java源程序Test.java如下:// Test.javaimport javax.swing.*;/*** @(#) Test.java* Copyleft (c) 2002 RatKing* @author <a href="ratking@">RatKing</a>* @version 0.1, 2002-11-7* 描述:一个测试用的Java Application*/public class Test extends JFrame {public Test(String title) {super(title);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.getContentPane().add(new JLabel("测试!", JLabel.CENTER), SwingConstants.CENTER);this.pack();}public static void main(String[] args) {try {//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());} catch(Exception e) {e.printStackTrace();}Test t = new Test("Test - 测试");t.setVisible(true);}}二、编译Test.java为Test.class(当然假设你事先已经设置好了JDK的环境变量PATH和CLASSPATH)在命令行执行编译命令:javac Test.java三、用文本编辑器(比如记事本/UltraEdit等- 甚至用ECHO命令加管道“>>”)编写如下manifest文件,并保存为abc.txtManifest-Version: 1.0Main-Class: Test【注意】文件abc.txt内必须是3行文本:第一行的内容依次是:“Manifest”、英文减号、“Version”、英文冒号、英文空格、数字“1”、英文句号、数字“0”第二行的英文冒号与Test之间必须要有一个英文空格!!!第三行是一个空行,也就是说,你要在Test之后键入一个回车,然后才可以存盘退出!!!如果冒号后面没有空格,可以生成jar文件但不能执行;如果Test后没有回车符,则生成jar 文件时会报错。
怎么把Java .class文件打成jar包?
怎么把Java.class文件打成jar包?方法1:在Eclipse中可以导出JAR文件(类似于EXE文件,不过需要JAVA虚拟机支持),执行File→Export→JAR(Runable)即可。
eclipse-->右键单击一个Java Project-->Export-->Java-JARfile/Runnable JAR file//也可以是Project下的一个Package方法2:jar命令:示例1:将两个class文件存档到一个名为'classes.jar'的存档文件中:jar cvf classes.jar Foo.class Bar.class示例2:用一个存在的清单(manifest)文件'mymanifest'将foo/目录下的所有文件存档到一个名为'classes.jar'的存档文件中:jar cvfm classes.jar mymanifest-C foo/.jar用法:jar{ctxu}[vfm0Mi][jar-文件][manifest-文件][-C目录]文件名...选项:-c创建新的存档-t列出存档内容的列表-x展开存档中的命名的(或所有的〕文件-u更新已存在的存档-v生成详细输出到标准输出上-f指定存档文件名-m包含来自标明文件的标明信息-0只存储方式;未用ZIP压缩格式-M不产生所有项的清单(manifest〕文件-i为指定的jar文件产生索引信息-C改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按'm'和'f'标志指定的相同顺序。
【Java】class.jar和sources.jar及javadoc.jar三种jar包
【Java】class.jar和sources.jar及javadoc.jar三种jar包⼀、普及jar包知识 例如(举例⼦解释)类⽂件(.class) test-java-1.0-SNAPSHOT.jar⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar资源包(code) test-java-1.0-SNAPSHOT-sources.jar⼆、使⽤⽅法1.类⽂件(.class) test-java-1.0-SNAPSHOT.jar 反编译,最暴⼒直接的⽅法,将jar包拖进IDEA⾥查看2.⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar 解压该⽂件,打开index.html查看3.资源包 test-java-1.0-SNAPSHOT-sources.jar 拖进IDEA直接查看⼆、⽣成⽅法1.类⽂件(.class) test-java-1.0-SNAPSHOT.jar 直接使⽤maven打包⽣成即可2.⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar 使⽤ maven-javadoc-plugin 插件⽣成javadoc.jar3.资源包 test-java-1.0-SNAPSHOT-sources.jar 使⽤ maven-source-plugin 插件⽣成sources.jar完整pom⽂件如下:1<?xml version="1.0" encoding="UTF-8"?>2<project xmlns="/POM/4.0.0"3 xmlns:xsi="/2001/XMLSchema-instance"4 xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">5<modelVersion>4.0.0</modelVersion>67<groupId>com.test</groupId>8<artifactId>test-java</artifactId>9<version>1.0-SNAPSHOT</version>10<dependencies>11<dependency>12<groupId>junit</groupId>13<artifactId>junit</artifactId>14<version>4.12</version>15<scope>compile</scope>16</dependency>17</dependencies>1819<build>2021<plugins>22<plugin>23<!-- Maven 编译插件24指定maven编译的jdk版本,如果不指定,25 maven3默认⽤jdk 1.5 maven2默认⽤jdk1.3 -->26<groupId>org.apache.maven.plugins</groupId>27<artifactId>maven-compiler-plugin</artifactId>28<version>3.8.1</version>29<configuration>30<!-- ⼀般⽽⾔,target与source是保持⼀致的,但是,有时候为了让程序能在其他版本的jdk中运⾏(对于低版本⽬标jdk,源代码中不能使⽤低版本jdk中不⽀持的语法),会存在target不同于source的情况 --> 31<source>1.8</source><!-- 源代码使⽤的JDK版本 -->32<target>1.8</target><!-- 需要⽣成的⽬标class⽂件的编译版本 -->33<encoding>UTF-8</encoding><!-- 字符集编码 -->34<verbose>true</verbose>35<showWarnings>true</showWarnings>36<fork>true</fork><!-- 要使compilerVersion标签⽣效,还需要将fork设为true,⽤于明确表⽰编译版本配置的可⽤ -->37<executable><!-- path-to-javac --></executable><!-- 使⽤指定的javac命令,例如:<executable>${JAVA_1_4_HOME}/bin/javac</executable> -->38<compilerVersion>1.3</compilerVersion><!-- 指定插件将使⽤的编译器的版本 -->39<meminitial>128m</meminitial><!-- 编译器使⽤的初始内存 -->40<maxmem>512m</maxmem><!-- 编译器使⽤的最⼤内存 -->41<!-- <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument><!– 这个选项⽤来传递编译器⾃⾝不包含但是却⽀持的参数选项 –>-->42</configuration>43</plugin>4445<!-- ⽣成javadoc⽂档包的插件 -->46<plugin>47<groupId>org.apache.maven.plugins</groupId>48<artifactId>maven-javadoc-plugin</artifactId>49<version>3.2.0</version>50<executions>51<execution>52<id>attach-javadocs</id>53<goals>54<goal>jar</goal>55</goals>56</execution>57</executions>58</plugin>5960<!-- ⽣成sources源码包的插件 -->61<plugin>62<groupId>org.apache.maven.plugins</groupId>63<artifactId>maven-source-plugin</artifactId>64<version>3.2.1</version>65<configuration>66<attach>true</attach>67</configuration>68<executions>69<execution>70<!-- 在package阶段之后会执⾏源代码打包 -->71<phase>package</phase>72<goals>73<goal>jar-no-fork</goal>74</goals>75</execution>76</executions>77</plugin>78</plugins>79</build>8081</project>配置好插件后,使⽤maven package命令既能在target⽬录中查看到三个jar包 命令:mvn package如果要把三种jar包安装到本地仓库 命令:mvn install如果要把三种jar包发布到远程仓库 命令:mvn deploy。
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一键部署jar包和war包
java⼀键部署jar包和war包⽬录java ⼀键部署 jar 包和 war 包⼀、创建打包命令 gateway-package.bat⼆、创建启动⽂件 gateway.xml三、⼀键打包并部署脚本 gateway-deploy.bat ⽂件内容四、双击打包部署 bat ⽂件 gateway-deploy.bat五、执⾏ vue 打包并且上传部署六、安装 7z 压缩⼯具并配置系统环境变量七、创建上传部署⽂件 webConfig.xml九、双击执⾏部署 vue-deploy.batjava ⼀键部署 jar 包和 war 包⼀、创建打包命令 gateway-package.bat@echo offcd /d "F:\uincall-cloud-service\uin-api-alibaba\gateway\"gradle build bootJar@echo off 关闭命令回显,当不需要 dos 命令⼀⾏⼀⾏在命令窗⼝中显⽰的时候使⽤,@echo on 显⽰命令回显例如:当为 @echo on 会显⽰执⾏的命令@echo ontitle Acolor 01echo %date%pause当为 @echo off 并不会执⾏ title A 和 color 01 命令echo 是输⼊提⽰信息pause 是暂停执⾏执⾏命令,按下任意键后会继续执⾏,pause 会提⽰“请按任意键继续...”当执⾏的 bat 不在项⽬⽬录时,需要进⼊到项⽬⽬录执⾏打包命令,需要使⽤ /d 命令,后⾯是进⼊的⽬录gradle build bootJar 是执⾏ gradle 打包命令,如果是 maven ⼯程则使⽤ maven 打包命令,例如:mvn clean package -Dmaven.test.skip=true创建项⽬打包并执⾏到上传到服务器,并且结束之前项⽬部署的进程,并启动新的部署命令⼆、创建启动⽂件 gateway.xml<?xml version="1.0" encoding="utf-8" ?><config><threadPoolSize default="5">3</threadPoolSize><!--线程池⼤⼩,如果上传服务器多的话可以调⼤,默认5个线程--><servers><server><!-- 服务器 ip --><host>1.0.0.0</host><!-- 服务器⽤户名 --><userName>root</userName><!-- 服务器密码 --><password>password</password><!-- 上传的⽂件,可以有多个 --><uploads><upload><!-- 上传的包路径 --><local>F:\uincall-cloud-service\uin-api-alibaba\gateway\build\libs\gateway-1.0.0.jar</local><!-- 上传到服务器的路径 --><remote>/root/data/callcenter</remote></upload></uploads><!-- 需要执⾏的命令,可以有多个 --><commands><!-- 结束之前部署的进程 --><command><![CDATA[source /etc/profile; ps -ef | grep gateway-1.0.0.jar | grep -v grep | awk '{print $2}' | xargs kill -9]]></command><!-- 重新部署新上传的包 --><command><![CDATA[source /etc/profile; nohup java -jar /root/data/callcenter/gateway-1.0.0.jar >> /root/data/callcenter/gateway.log 2>&1 &]]></command> </commands></server></servers></config>ps -ef | grep gateway-1.0.0.jar | grep -v grep | awk '{print $2}' | xargs kill -9 查询正在部署的项⽬进⾏并且杀死ps -ef | grep gateway-1.0.0.jar 是查询进程grep -v grep 过滤包含 grep 的进程⾏,然后再杀掉剩下的进程awk '{print $2}' 提取找到的进程⾏记录中第⼆列的参数,也就是正在执⾏项⽬的进程号xargs kill -9 把前⾯的参数都传递给后⾯的命令 kill -9三、⼀键打包并部署脚本 gateway-deploy.bat ⽂件内容call gateway-package.batjava -jar F:\uincall-cloud-service\test-deploy\javaauto.jar F:\uincall-cloud-service\test-deploy\gateway.xmlpausecall gateway-package.bat 是执⾏上⾯的项⽬打包的 gateway-package.bat ⽂件,call 作⽤是可以在当前批处理执⾏前调⽤另⼀个批处理⽂件,这⾥的意思就是先打包在上传⾄服务器并且部署java -jar F:\uincall-cloud-service\test-deploy\javaauto.jar 可执⾏⽂件 jar 包,负责执⾏上传部署指令F:\uincall-cloud-service\test-deploy\gateway.xml ,上传部署的命令都写在 gateway.xml 中注意:这⾥要执⾏的⽂件都需使⽤绝对路径,哪怕在⼀个⽂件加⾥四、双击打包部署 bat ⽂件 gateway-deploy.bat成功上传并且部署成功!!五、执⾏ vue 打包并且上传部署创建 vue 打包 bat ⽂件 vue-package.bat@echo offecho 开始打包......cd /d "F:\uincall-cloud-service\\"npm run buildecho 打包完毕 successF:\uincall-cloud-service\" 是⼯程根⽬录六、安装 7z 压缩⼯具并配置系统环境变量创建 7z 压缩 vue 打包后的 bat ⽂件 zip.bat@echo offset CALLCENTER_PATH=F:\uincall-cloud-service\\dist\*set ZIP_PATH=F:\uincall-cloud-service\deploy\callcenter.tarecho 开始压缩 callcenter vue7z a -r %ZIP_PATH% %CALLCENTER_PATH%set CALLCENTER_PATH=F:\uincall-cloud-service\\dist* vue 打包后的⽂件夹⽬录,打包后的⽂件都在此⽬录下set ZIP_PATH=F:\uincall-cloud-service\deploy\callcenter.tar 设置打包后的⽂件名和格式7z a -r %ZIP_PATH% %CALLCENTER_PATH%,7z:使⽤ 7z 压缩,a:是添加⽂件到压缩⽂件中,-r:包括⼦⽬录,其他是引⽤上⾯定义的变量,也就是打包后的格式和需要打包的⽂件所在⽬录七、创建上传部署⽂件 webConfig.xml<config><threadPoolSize default="5">3</threadPoolSize><!--线程池⼤⼩,如果上传服务器多的话可以调⼤,默认5个线程--><servers><server><!-- 服务器 ip --><host>1.0.0.0</host><!-- 服务器⽤户名 --><userName>root</userName><!-- 服务器密码 --><password>password</password><!-- 上传的⽂件,可以有多个 --><uploads><upload><!-- 上传的⽂件 --><local>F:\uincall-cloud-service\deploy\callcenter.tar</local><!-- 上传到服务器的⽬录 --><remote>/root/data/callcenter/web</remote></upload></uploads><!-- 上传成功后执⾏的命令 --><commands><!-- 添加 777 权限 --><command><![CDATA[source /etc/profile; chmod 777 /root/data/callcenter/web/callcenter.tar]]></command><!-- 解压 -C 表⽰创建新的档案⽂件,会解压到新的⽬录,默认解压到根⽬录 / --><command><![CDATA[source /etc/profile; tar -xvf /root/data/callcenter/web/callcenter.tar -C /root/data/callcenter/web]]></command><!-- 解压完删除压缩⽂件 --><command><![CDATA[source /etc/profile; rm -rf /root/data/callcenter/web/callcenter.tar]]></command><!-- 刷新 nginx --><command><![CDATA[source /etc/profile; nginx -s reload]]></command></commands></server></servers></config>创建 vue 打包部署 bat ⽂件 vue-deploy.bat,分别执⾏上⾯创建打包 vue-package.bat 压缩 zip.bat 上传部署命令webConfig.cmlcall F:\uincall-cloud-service\test-deploy\vue-package.batcall F:\uincall-cloud-service\test-deploy\zip.batjava -jar F:\uincall-cloud-service\test-deploy\javaauto.jar F:\uincall-cloud-service\test-deploy\webConfig.xmlecho 上传并解压完毕pause九、双击执⾏部署 vue-deploy.bat成功上传并解压以上就是java ⼀键部署 jar 包和 war 包的详细内容,更多关于java 部署 jar 包 war 包的资料请关注其它相关⽂章!,希望⼤家以后多多⽀持!。
java-jar命令运行jar包时指定外部依赖jar包
java-jar命令运⾏jar包时指定外部依赖jar包你们都知道⼀个java应⽤项⽬能够打包成⼀个jar,固然你必须指定⼀个拥有main函数的main class做为你这个jar包的程序⼊⼝。
具体的⽅法是修改jar包内⽬录META-INF下的MANIFEST.MF⽂件。
好⽐有个叫作test.jar的jar包,⾥⾯有⼀个拥有main函数的main class:test.someClassName。
咱们就只要在MANIFEST.MF⾥⾯添加以下⼀句话:htmlMain-Class: test.someClassName⽽后咱们能够在控制台⾥输⼊java -jar test.jar便可以运⾏这个jar。
可是咱们这个项⽬须要引⽤其余第三⽅的jar包,在eclipse⾥⾯以项⽬jar包的形式引⽤了这个叫作some.jar的包,当时放在项⽬的lib⼦⽬录下,最后项⽬打包时把这个some.jar也打进来了,可是⽤java -jar执⾏这个test.jar的时候报找不到Class异常,缘由就是jar引⽤不到放在本⾝内部的jar包。
那怎么办?运⾏时将其加⼊classpath的⽅式⾏不⾏?就是在运⾏jar的同时加⼊classpath参数:javajava -classpath some.jar -jar test.jar这种⽅式是不⾏的,由于使⽤classpath指定的jar是由AppClassloader来加载,java命令加了-jar 参数之后,AppClassloader就只关注test.jar范围内的class了,classpath参数失效。
那该怎么引⽤其余的jar包呢?linux⽅法1、使⽤Bootstrap Classloader来加载这些类算法咱们能够在运⾏时使⽤以下参数:sql-Xbootclasspath:彻底取代系统Java classpath.最好不⽤。
-Xbootclasspath/a: 在系统class加载后加载。
Java打包成jar文件,以及将jar文件导出为exe文件方法汇总
Java打包成jar文件,以及将jar文件导出为exe文件方法汇总(图形说明)一、Java打包成jar文件方法一:用Eclipse导出jar文件注:我用的是Eclipse,但是MyEclipse也大同小异首先右键点击所要打包的工程,选择Export选项选择JAR file,点击Next在要打包的工程前打钩,如上图红色所示;选择导出文件的目的地址,如图蓝色所示,包名随意,没有特定的要求;点击Next点击Browse选择到主类所在的上一个文件夹,别忘了填写File name(随意起名即可),点击OK;点击第四幅图的下面的Browse按钮,选择主类的名字,如下图所示点击OK,即可完成打包。
运行jar文件,可将jar文件与一个批处理文件放到一个文件夹中;其中批处理文件的内容为:java -jar neme.jar(其中name为jar包的名字)批处理文件格式为.bat;双击批处理文件即可运行程序。
PS:将java工程文件打包成.exe文件我用的是一个exe4j的免费软件第一步:默认即可,直接点击Next第二步:如果有已经制作好的jar文件,选择“JAR in EXE”mode,然后点击Next第三步:红色划线框内填写工程名字,随意即可;蓝色划线框内填写打包后的exe文件输出目录第四步:如果需要导出为exe文件的是图形界面,则选择GUI application;如果要导出为exe文件的是控制台的,则选择console application;Executable name写你将要生成的exe文件的名字,Icon File可以选择生成文件的图标第五步:点击绿色的加号,出现如下所示对话框,选择archive,然后选择已经打包好的jar文件选择主类完成后如图所示第六步:最小版本填1.3,最大版本填1.6;如果只需导出的exe在装有JRE的机子上可以运行,那么一路Next下去,最后点击Finish即可;如果想要在没有装JRE的机器上运行,那么需要继续,点击Advanced Options,选择searchsequence选择Directory,点击浏览按钮,选择JRE所在的根目录,将JRE复制过来,如下图所示选择Preferred VM,选择Client hotspot VM第7、8步是一些基本配置,默认即可,第9步编译,第10步你就可以看到以下效果了好了,大功告成了~方法二:用命令生成jar文件首先编写一个清单文件,名为:MANIFEST.MFT,其代码如下:Manifest-Version: 1.0//该属性是创建可执行jar包必需的,指定的Main-Class为全路径类名(且该类必需有main方法)Main-Class:填写你的主类Created-By: 1.5.0_02 (Sun Microsystems Inc.)然后,使用如下命令生成jar文件:jar cfm 填写你要生成jar的名字.jar MANIFEST.MFT *.class其中,c表示要生成一个新的jar文件;f表示生成jar的名字;m表示清单文件的名字二、ar文件导出为可执行文件,即exe文件方法一:用j2ewiz,使用方法如下:操作步骤:1、双击j2ewiz.exe,出现软件注册窗口,点击下一步。
java如何把源码导出为jar包,以及如何使用导出的jar包
java如何把源码导出为jar包,以及如何使⽤导出的jar包1.新建java project,编写源码如下:package baseTest;import java.awt.*;import java.awt.geom.*;import javax.swing.*;public class DrawLineFrame {public static void main (String [] args){JFrame window = new DrawFrame();window.setTitle("绘制图形");window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);window.setBounds(100,100,600,400);window.setVisible(true);}}//窗⼝类class DrawFrame extends JFrame{/****/private static final long serialVersionUID = 1L;public DrawFrame(){add(new DrawComponent());pack();}}//图形类class DrawComponent extends JComponent{/****/private static final long serialVersionUID = 1L;private static final int DEAFULT_WIDTH = 400;private static final int DEFAULT_HEIGHT = 400;public void paintComponent(Graphics g){Graphics2D g2 = (Graphics2D)g;//绘制矩形double leftx = 100;double topy = 100;double width = 200;double height = 150;Rectangle2D rect = new Rectangle2D.Double(leftx,topy ,width,height);g2.draw(rect);//绘制椭圆Ellipse2D ellipse = new Ellipse2D.Double();ellipse.setFrame(rect);g2.draw(ellipse);//绘制直线g2.draw(new Line2D.Double(leftx,topy,leftx + width ,topy + height));//画正圆double centerx = rect.getCenterX();double centery = rect.getCenterY();double radius = 150;Ellipse2D circle = new Ellipse2D.Double();circle.setFrameFromCenter(centerx, centery,centerx+radius,centery+radius);g2.draw(circle);}}2.运⾏,run as application,如果没有什么错误,导出jar包。
【Java基础】Jar包结构结构分析和操作具体解释
【Java基础】Jar包结构结构分析和操作具体解释作者:郭嘉邮箱:allenwells@博客:github:⼀ JAR包结构分析JAR(Java Archive FIle)Java归档⽂件,是Java标准的⽂档格式,是⼀个或多个Java字节码⽂件的打包压缩⽂件。
採⽤常见的ZIP压缩算法,和ZIP⽂件⼗分相似,能够直接解压。
JAR⽂件主要⽤来压缩和公布字节码⽂件,并且还⽤于部署和封装库、组件和插件程序。
并且能够被像编辑器和JVM这种⼯具直接使⽤。
1.1 JAR包结构JAR包的结构例如以下图所看到的:1.2 MANIFEST.MF属性从上图能够看出,JAR包⽐普通zip⽂件多了⼀个META-INF⽂件夹,该⽂件夹下包括了⼀个MANFEST.MF⽂件。
1.2.1 ⼀般属性1. Manifest-Version⽤来定义manifest⽂件的版本号,⽐如:Manifest-Version: 1.02. Created-By声明该⽂件的⽣成者,⼀般该属性是由jar命令⾏⼯具⽣成的。
⽐如:Created-By: Apache Ant 1.5.13. Signature-Version定义jar⽂件的签名版本号4. Class-Path应⽤程序或者类装载器使⽤该值来构建内部的类搜索路径1.2.2 应⽤程序相关属性1. Main-Class定义jar⽂件的⼊⼝类。
该类必须是⼀个可运⾏的类,⼀旦定义了该属性就可以通过 java -jar x.jar来运⾏该jar⽂件。
1.2.3 ⼩程序(Applet)相关属性1. Extendsion-List该属性指定了⼩程序须要的扩展信息列表。
列表中的每⼀个名字相应以下的属性2. -Extension-Name3. -Specification-Version4. -Implementation-Version5. -Implementation-Vendor-Id6. -Implementation-URL1.2.4 扩展标识属性1. Extension-Name该属性定义了jar⽂件的标识,⽐如Extension-Name: Struts Framework。
Java命令行下Jar包打包小结
Java命令⾏下Jar包打包⼩结jar包打包实现jar包打包可以使⽤jar指令实现打包,在命令⾏中输⼊jar可以查看jar指令的内容从最后显⽰的两个⽰例看出存在两种打包的⽅法,两者的区别就是是否使⽤⾃⼰定义的MANIFEST清单⽂件。
第⼀个⽰例没有使⽤MANIFEST⽂件进⾏打包,所以最终⽣成的jar包中MANIFEST⽂件为默认⽂件,这种⽅式适⽤于⽐较简单的jar包结构,不存在其他jar包依赖以及⽣成的jar包不需要可执⾏。
这种⽅式⽣成的jar包不能使⽤java -jar XXX.jar命令执⾏,因为MANIFEST⽂件中未指定程序⼊⼝。
⽽第⼆个实例是⽐较常⽤的打包⽅式,即是使⽤⾃定义的MANIFEST⽂件参与打包,这样能够实现往包中添加依赖,并且可以指定程序⼊⼝,实现java -jar XXX.jar直接运⾏jar包。
第⼀种简单的打包⽅式最简单的就是在当前⽂件夹下将编译的class字节码⽂件进⾏打包输出。
⽰例如下:编写三个java⽂件,test1.java test2.java 以及Main.javapublic class test1{public static void main(String[] args){}public void display(){System.out.println("this is class test1");}}以及test2.java ⽂件public class test2{public static void main(String[] args){}public void display(){System.out.println("this is class test2");}}Main.javapublic class Main{public static void main(String[] args){for(String a:args){System.out.println("给定的参数"+a);}test1 t1 = new test1();t1.display();test2 t2 = new test2();t2.display();}}命令⾏下将这三个⽂件进⾏编译,使⽤javac命令实现编译。
idea打包java项目生成jar 原理-概述说明以及解释
idea打包java项目生成jar 原理-概述说明以及解释1.引言1.1 概述在Java开发中,项目的打包是必不可少的环节。
打包后的项目可以方便地部署和传输,使得程序在不同的环境中能够运行。
而JAR(Java Archive)文件则是一种常见的打包格式,它将Java项目的所有源代码、资源文件和依赖库等打包在一起,并且可以被Java虚拟机(JVM)识别和执行。
JAR打包对于Java项目的部署和运行起到了至关重要的作用。
在打包过程中,所有的源代码、配置文件、第三方库以及其他所需的资源文件都会被打包成一个可执行的JAR文件。
这个JAR文件可以被轻松地传输、备份和部署到其他环境中。
了解JAR打包的原理对于Java开发人员来说是非常重要的。
它可以帮助我们更好地理解项目的结构和组成,并且能够正确地配置和优化JAR 文件,以满足项目的需求和性能要求。
另外,掌握JAR打包的原理还有助于我们更好地理解Java的类加载机制,从而能够更好地调试和优化项目的运行效率。
本文将从概念和背景开始,介绍Java项目打包成JAR的原理。
我们将探讨JAR文件的组成和结构,以及JAR打包过程中的一些关键步骤和技巧。
最后,我们将总结JAR打包的重要性,并强调了解JAR打包原理的好处。
通过阅读本文,希望读者能够对Java项目的打包有更深入的了解,并能够在实际开发中灵活应用JAR打包技术。
1.2文章结构文章结构部分的内容主要是对本篇长文的章节和内容进行概括和介绍。
以下是文章结构部分的内容:1.2 文章结构本文主要围绕着"idea打包Java项目生成JAR"的原理展开讨论,旨在帮助读者了解Java项目打包成JAR文件的概念、背景和原理。
为了使读者更好地理解,本文按照以下章节进行组织和阐述。
第一部分是引言部分,包括概述、文章结构和目的。
在本部分,我们将对整篇文章进行简要回顾,并明确文章的目的和意义,以便读者能够更好地理解和把握文章内容的整体框架。
