将CLASS文件生成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 压缩命令jarjar工具是个java应用程序,可将多个文件合并为单个JAR归档文件。
jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。
然而,设计jar的主要目的是便于将java Applet或应用程序打包成单个归档文件。
将Java Applet或应用程序的组件(.class 文件、图像和声音)合并成单个归档文件时,可以通过浏览器等进行下载,这大大缩短了下载时间。
jar还能压缩文件,从而进一步提高了下载速度。
jar [命令选项] [manifest] destination input-file [input-files]其命令选项的详细参数如下:● c 在标准输出上创建新归档或空归档。
●t 在标准输出上列出内容表。
●x[file] 从标准输入提取所有文件,或只提取指定的文件。
如果省略了file,则提取所有文件;否则只提取指定文件。
● f 第二个参数指定要处理的jar文件。
在c(创建)情形中,第二个参数指的是要创建的jar文件的名称(不是在标准输出上)。
在t或x(表或抽取)这两种情形中,x指定要列出或抽取的jar文件。
●v 在标准错误输出设备上生成长格式的输出结果。
●m 包括指定的现有清单文件中的清单信息,如“jar cmf myManifestFile myJarFile*.class”。
●O 只储存,不进行ZIP压缩。
●M 不创建项目的清单文件。
●u 通过添加文件或更改清单来更新现有的JAR文件,如“jar -uf foo.jar foo.class”将文件foo.class添加到现有的JAR文件foo.jar中;而“jar umf manifest foo.jar”则用manifest中的信息更新foo.jar的清单。
● C 在执行jar命令期间更改目录,如“jar -uf foo.jar -C classes *”将classes目录内的所有文件加到foo.jar中,但不添加类目录本身。
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。
idea class文件反编译
Idea Class文件反编译1. 什么是Class文件反编译Class文件反编译是指将Java字节码文件(.class文件)转换回Java源代码的过程。
Java源代码在编译时会被编译器转换成字节码,然后在Java虚拟机(JVM)上执行。
但是,由于字节码是一种中间语言,无法直接阅读和理解,因此有时需要将其还原为可读的Java源代码。
Class文件反编译可以帮助开发人员理解和分析已经编译的Java类文件,以及进行代码审查、修复漏洞等工作。
同时,它也可以用于学习和研究其他人的代码,了解其实现细节和设计思路。
2. Class文件反编译工具目前市面上有许多Class文件反编译工具可供选择。
其中比较知名的包括以下几种:•JD-GUI:JD-GUI 是一个开源的 Java 反编译器,可以将.class 文件转换为可读的 Java 源代码,并提供了图形界面进行操作。
•Jadx:Jadx 是一个基于 Java 的开源反编译工具,可以将 Android APK 文件中的 .class 文件还原为 Java 源代码,并提供命令行和图形界面两种方式。
•FernFlower:FernFlower 是一个开源的 Java 反编译器,可以将.class 文件转换为可读的 Java 源代码,并提供了命令行和图形界面两种方式。
以上工具都具有一定的优势和特点,使用时可以根据个人需求和偏好进行选择。
3. 如何进行Class文件反编译3.1 使用JD-GUI进行Class文件反编译JD-GUI 是一个简单易用的Java反编译工具,可以通过以下步骤进行Class文件反编译:1.下载并安装JD-GUI工具。
2.打开JD-GUI工具,点击菜单栏的“File” -> “Open”,选择要反编译的.class文件。
3.JD-GUI会自动将.class文件转换为可读的Java源代码,并在右侧窗口显示出来。
3.2 使用Jadx进行Class文件反编译Jadx 是一个功能强大的Java反编译工具,可以通过以下步骤进行Class文件反编译:1.下载并安装Jadx工具。
javassist jar 修改 方法
javassist jar 修改方法摘要:1.简介2.javassist 是什么3.如何使用javassist 修改jar 包4.修改方法5.总结正文:1.简介在Java 开发中,我们有时需要对jar 包进行一些修改,例如添加、删除或修改类、方法等。
javassist 是一个Java 字节码修改框架,它可以帮助我们轻松地实现这些操作。
2.javassist 是什么Javassist 是一个强大的Java 字节码修改工具,它可以让Java 程序在运行时动态地修改类和字节码。
它支持对类、方法、字段等进行操作,提供了丰富的API 供开发者使用。
3.如何使用javassist 修改jar 包要使用javassist 修改jar 包,首先需要将jar 包转换为Class 文件,然后使用Javassist 的API 对Class 文件进行修改。
接下来,将修改后的Class 文件重新打包成jar 包。
具体步骤如下:a.将jar 包转换为Class 文件使用`jar2class`工具将jar 包转换为Class 文件,例如:`jar2class -x input.jar output`。
b.使用Javassist 修改Class 文件使用Javassist 的API 对Class 文件进行修改,例如:```javaClassPool pool = new ClassPool();pool.appendClassPath(new File("input.jar"));CtClass ctClass = pool.getCtClass("com.example.ClassName");// 修改方法CtMethod method = ctClass.getDeclaredMethod("methodName");method.setBody("{System.out.println("修改后的方法实现");}");// 添加方法CtMethod newMethod = CtMethod.make(Modifier.PUBLIC, ctClass, "newMethodName", new CtClass[]{}, "{}");ctClass.addMethod(newMethod);// 删除字段ctClass.removeField("fieldName");// 修改字段ctClass.getField("fieldName").setModifiers(Modifier.PRIVATE);// 保存修改后的Class 文件ctClass.writeFile("output.class");```c.将修改后的Class 文件重新打包成jar 包使用`jar`命令将修改后的Class 文件打包成jar 包,例如:`jar cvf output.jar output.class`。
Android打包篇:AndroidStudio将代码打包成jar包教程
Android打包篇:AndroidStudio将代码打包成jar包教程⼀、新建⼀个as项⽬,再新建⼀个model模块然后再app中的build.gradle中添加model的依赖。
然后编译项⽬。
⼆、编译完成后,打开model下的build——intermediates——bundles⽬录,⽬录下有两个⽂件夹,debug,default,在default⽂件夹下有⼀个classess.jar,就是编译完成的jar包,这⾥需要主要的是:因为我们使⽤的 as 版本不⼀致,所以会导致classess.jar包的⽬录页会不⼀样,不过最终的⽬录还是在build——intermediates——bundles⽬录下,⼩伙伴们可以在这个⽬录下寻找classess.jar⽂件,确保可以找到这个⽂件之后,再进⾏第三步的操作。
三、在确保classess.jar⽂件存在的情况下,打开model模块的build.gradle⽂件,在⽂件中与android模块中添加如下代码,并编译://Copy类型task makeJar(type: Copy) {//删除存在的delete 'build/libs/mysdk.jar'//设置拷贝的⽂件from('build/intermediates/bundles/default/')//打进jar包后的⽂件⽬录into('build/libs/')//将classes.jar放⼊build/libs/⽬录下//include ,exclude参数来设置过滤//(我们只关⼼classes.jar这个⽂件)include('classes.jar')//重命名rename ('classes.jar', 'mysdk.jar')}makeJar.dependsOn(build)这⾥需要注意:上述代码中from括号中的是你的classess.jar的⽂件⽬录,这⾥贴的是我⾃⼰的⽬录,不同的as版本可能导致⽬录不同,所以⼩伙伴们在⽤的时候直接换成你们⾃⼰的classess.jar路径即可。
jar命令
JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包。
当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当你找成JAR包时,它会自动生成。
JAR包是由JDK安装目录\bin\jar.exe命令生成的,当我们安装好JDK,设置好path路径,就可以正常使用jar.exe命令,它会用lib\tool.jar工具包中的类。
这些细节就不用管它了。
让我们看看它怎么么使用吧:<!--=========================Jack.Hao=================================-->一.jar命令参数:jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...其中{ctxu}这四个参数必须选选其一。
[v f m e 0 M i ]是可选参数,文件名也是必须的。
-c 创建一个jar包-t 显示jar中的内容列表-x 解压jar包-u 添加文件到jar包中-f 指定jar包的文件名-v 生成详细的报造,并输出至标准设备-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)-0 产生jar包时不对其中的内容进行压缩处理-M 不产生所有文件的清单文件(Manifest.mf)。
这个参数与忽略掉-m参数的设置-i 为指定的jar文件创建索引文件-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令<!--===========================Jack.Hao==========================-->二.jar使用范例:(1)创建jar包jar cf hello.jar hello 利用test目录生成hello.jar包,如hello.jar存在,则覆盖(2)创建并显示打包过程jar cvf hello.jar hello 利用hello目录创建hello.jar包,并显示创建过程例:E:\>jar cvf hello.jar hello标明清单(manifest)增加:hello/(读入= 0) (写出= 0)(存储了0%)增加:hello/TestServlet2.class(读入= 1497) (写出= 818)(压缩了45%)增加:hello/HelloServlet.class(读入= 1344) (写出= 736)(压缩了45%)增加:hello/TestServlet1.class(读入= 2037) (写出= 1118)(压缩了45%)(3)显示jar包jar tvf hello.jar 查看hello.jar包的内容指定的jar包必须真实存在,否则会发生FileNoutFoundException。
dxvm使用方法
DXVM使用方法
dxvm的使用方法包括以下步骤:
1.新建一个Java文件,例如:public class Test_07_22 { public static void
main(String args[]){ System.out.println("hlwang test dalvikvm"); } }。
2.使用javac命令编译Java文件,生成对应的.class文件。
命令如下:
javac Test_07_22.java,这将会生成Test_07_22.class。
3.使用dx工具将.class文件打包压缩成.dex文件jar包。
dx工具是
Android源代码文件的一部分,其路径通常在out目录下。
命令如下:
PATH=~/workspace/work/out/host/linux-x86/bin/:$PATH dx --dex --
output=test_07_22.jar Test_07_22.class,这将会生成test_07_22.jar。
4.将生成的.jar文件推送到手机,并使用dalvikvm命令运行。
命令如下:
adb push test_07_22.jar /system/framework,adb shell dalvikvm -cp
/system/framework/test_07_22.jar Test_07_22。
以上步骤完成后,应该可以在手机上看到"hlwang test dalvikvm"的输出。
注意:以上步骤仅供参考,具体步骤可能会因实际环境和需求而有所不同。
java基础命令
java基础命令Java是一种广泛应用于开发各类应用程序的编程语言,它具有简单易学、跨平台等特点,因此备受开发者的喜爱。
在Java中,基础命令是我们进行编程时经常用到的,下面将介绍一些常用的Java基础命令。
1. javac命令:javac命令用于将Java源文件编译成字节码文件,即将.java文件编译成.class文件。
使用该命令需要在命令行中输入javac加上要编译的Java源文件名,例如:javac HelloWorld.java。
2. java命令:java命令用于运行已经编译好的字节码文件,即运行.class文件。
使用该命令需要在命令行中输入java加上要运行的字节码文件名,例如:java HelloWorld。
3. javadoc命令:javadoc命令用于生成Java源代码的文档,方便其他开发者阅读和理解代码。
使用该命令需要在命令行中输入javadoc加上要生成文档的Java源文件名,例如:javadoc HelloWorld.java。
4. jar命令:jar命令用于创建和管理Java的归档文件,也就是.jar 文件。
使用该命令可以将多个.class文件打包成一个.jar文件,方便程序的发布和部署。
使用该命令需要在命令行中输入jar加上相应的参数,例如:jar -cvf HelloWorld.jar HelloWorld.class。
5. javap命令:javap命令用于反编译Java字节码文件,将字节码文件转换成可读的文本形式,方便开发者进行分析和调试。
使用该命令需要在命令行中输入javap加上要反编译的字节码文件名,例如:javap HelloWorld.class。
6. jps命令:jps命令用于列出当前系统中正在运行的Java进程的进程号和名称。
使用该命令需要在命令行中直接输入jps,即可显示当前系统中正在运行的Java进程。
7. jstat命令:jstat命令用于监视Java虚拟机的各种运行状态信息,如垃圾回收信息、类加载信息等。
java运行jar命令提示没有主清单属性
java运⾏jar命令提⽰没有主清单属性在JAVA中将class⽂件编译成jar⽂件包,运⾏提⽰没有主清单属性。
这是怎么回事?今天⼩编教来教⼤家如何解决这个问题。
⼯具/原料⾸先确认你是否有⽂件好java电脑需要安装winrar⽅法/步骤1.在java中编译JAR⽂件的时候我们都会⽤到,jar这个命令。
当⽤着jar ⽂件时候我们不可少的是cvf这⼏个参数来⽣成jar⽂件。
但是⽤个⽂件来了,在⽤不使⽤⼯具的前提下我们⽣成的jar⽂件包后运⾏会出现。
某某类的没有主清单属性。
如下图。
2.这样的问题是因为,jar包中的META-INF⽂件夹下的MANIFEST.MF⽂件缺少定义jar接⼝类。
说⽩了就是没有指定class类。
这⾥说明⼀下MANIFEST.MF就是⼀个清单⽂件,通俗点将就相当于WINDOWS中ini配置⽂件。
⽤来配置程序的⼀些信息。
所以才造成这样的问题。
3.解决这个问题的⽅法就是要在MANIFEST.MF⽂件中添加⼀个⼊⼝类。
即需要⼀个Main-Class定义⾏。
更详细的MANIFEST.MF⽂件定义说明,请参考官⽅MANIFEST.MF⽂件定义⼿册。
下⾯是⼀个完整的详细的MANIFEST.MF⽂件信息4.对于这种问题的解决办法⽹络上各种说法呀。
⼩编只能⽤⽆语来形容,这个问题的最更本原因就如提⽰⼀样,没有主清单属性。
所以,解决办法很简单。
就是在MANIFEST.MF添加⼊⼝。
⾸先找到你的jar⽂件。
5.之后双击打开jar⽂件,你的电脑需要安装有winrar。
或者其他压缩⼯具。
之后,在双击打开这个⽂件夹META-INF,6.再选择MANIFEST.MF⽂件,⽤记事本打开它。
7.现在看看⽂件中是否有Main-Class这样⼀⾏⽂字,如果没有的话那么添加⼀⾏。
Main-Class: gui 这⾥的gui是你的xxx.java⽂件编译后的xxx.class⽂件稍微名称。
但是不要加.class后缀。
如果有的话,那么看下Main-Class: gui 这后⾯的名称是否和你的class⽂件名称⼀致。
Dos操作Java文件
Dos操作Java文件目录一.编写java 文件二.将.java 文件编译成.class 文件三.执行.class 文件四.将.class 文件打包成.jar 文件五.执行.jar文件六.执行带有第三方jar文件的jar文件实现一.编写java 文件1.新建一个T est.java文件,编写内容如下:public class Test {public static void main(String[] args) {System.out.println("hello World!");}}2.将T est.java文件放到e:\zc目录中。
二.将.java 文件编译成.class 文件1.cmd进入dos 命令窗口。
如下图所示:2.进入e:\zc 目录。
如下图所示:2.执行javac .java文件dos命令(这里的.java文件是T est.java) 将T est.java文件编译成T est.class文件。
如下图所示:3.打开e:\zc目录或执行dir dos命令查看是否编译成功。
如下图所示:三.执行.class 文件1.执行java .class文件名称dos命令(这里的.class 文件名称是T est)如下图所示:Java JDK 配置如下:JA V A_HOME D:\Program Files\Java\jdk1.6.0_30PA TH %JA V A_HOME%\binCLASSPA TH %JA V A_HOME%\lib\dt.jar;%JA V A_HOME%\lib\tools.jarJava 版本:执行失败,不知道是什么原因。
四.将.class 文件打包成.jar 文件1.执行jar cvf 名称.jar文件.class文件dos命令(这里的名称.jar文件是test.jar, .class文件是T est.class)将.class 文件打包成.jar文件。
14.JAVA-jar命令使用
14.JAVA-jar命令使⽤
介绍
jar命令⽤来对*.class⽂件进⾏压缩,从⽽⽣成jar(archive)归档⽂件,避免⽂件过多.
定义⼀个⽂件:
package common.demo ;
public class Test
{
public static void main(String args[]){
System.out.println("Hello World");
}
}
编译后,⽣成包.类,然后将这个common包进⾏压缩为jar⽂件.输⼊下⾯命令:
jar –cvf my.jar common //将common⽬录创建为⼀个jar⽂件
//c:创建 v:打印输出 f:指定的jar⽂件
打印如下:
当我们想往my.jar添加其它包的时候,输⼊:
jar uf my.jar call //往my.jar ⾥添加call包
如果想解压jar包,则输⼊:
jar -xvf my.jar
当我们想通过外部程序调⽤该路径的jar包时,则需要配置CLASSPATH,如果在命令⾏,则输⼊"SET CLASSPATH=当前路径;",或者在电脑——>属性——>⾼级——>环境变量——>系统变量⾥添加变量名CLASSPATH,并设置变量值(路径).
设置好后,就可以在程序⾥直接通过"import common.demo ;"来使⽤jar⽂件⾥的包类了.。
JAVA控制台命令详解
JAVA控制台命令详解(一)命令概览javac:Java编译器,将Java源代码换成字节代java:Java解释器,直接从类文件执行Java应用程序代码appletviewer(小程序浏览器):一种执行HTML文件上的Java小程序类的Java浏览器javadoc:根据Java源代码及其说明语句生成的HTML文档jdb:Java调试器,可以逐行地执行程序、设置断点和检查变量javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义jar:多用途的存档及压缩工具,是个java应用程序,可将多个文件合并为单个JAR归档文件。
htmlConverter——命令转换工具。
native2ascii——将含有不是Unicode或Latinl字符的的文件转换为Unicode编码字符的文件。
serialver——返回serialverUID。
语法:serialver[show]命令选项show是用来显示一个简单的界面。
输入完整的类名按Enter键或"显示"按钮,可显示serialverUID。
(二)命令详细介绍补充详细:1.javac.exe用法:javac<选项><源文件>可能的选项包括:-g生成所有调试信息-g:none生成无调试信息-g:{lines,vars,source}生成只有部分调试信息-O优化;可能妨碍调试或者增大类文件-nowarn生成无警告-verbose输出关于编译器正在做的信息-deprecation输出使用了不鼓励使用的API的源程序位置-classpath<路径>指定用户类文件的位置-sourcepath<路径>指定输入源文件的位置-bootclasspath<路径>覆盖自举类文件的位置-extdirs<目录(多个)>覆盖安装的扩展类的位置-d<目录>指定输出类文件的位置-encoding<编码>指定源文件中所用的字符集编码-target<版本>生成指定虚拟机版本的类文件-help Print a synopsis of standard options2.Java.exeJava在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME\bin\java–option来启动,-option为虚拟机参数,JAVA_HOME为JDK安装路径,通过这些参数可对虚拟机的运行状态进行调整,掌握参数的含义可对虚拟机的运行模式有更深入理解。
Java项目打包成jar文件的两种方法
Java项⽬打包成jar⽂件的两种⽅法⽅案⼀:⽤Eclipse⾃带的Export功能步骤1:准备主清单⽂件 “MANIFEST.MF”,由于是打包引⽤了第三⽅jar包的Java项⽬,故需要⾃定义配置⽂件MANIFEST.MF,在该项⽬下建⽴⽂件MANIFEST.MF,内容如下:Manifest-Version: 1.0Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar lib/commons-logging-1.1.jar lib/log4j-1.2.16.jar lib/jackson-all-1.8.5.jarMain-Class: main.KillCheatFans第⼀⾏是MAINIFEST的版本,第⼆⾏Class-Path就指定了外来jar包的位置,第三⾏指定我们要执⾏的MAIN java⽂件。
这⾥要注意⼏点:1、Class-Path: 和Main-Class: 后边都有⼀个空格,必须加上,否则会打包失败,错误提⽰为:Invalid header field;2、假设我们的项⽬打包后为KillCheatFans.jar,那么按照上⾯的定义,应该在 KillCheatFans.jar的同层⽬录下建⽴⼀个lib⽂件夹(即lib⽂件和打包的jar⽂件在同⼀个⽬录下),并将相关的jar包放在⾥⾯。
否则将会出现“Exception in thread "main" ng.NoClassDefFoundError”的错误;3、Main-Class后⾯是类的全地址,⽐如你的主⽂件是KillCheatFans.java,⽂件⾥打包为package com.main; 那么这⾥就写com.main.KillCheatFans,不要加.java后缀,主⽂件地址写错将会出现“找不到或⽆法加载主类”的错误;4、写完Main-Class后⼀定要回车(即最后⼀⾏是空⽩⾏),让光标到下⼀⾏,这样你⽣成的jar包才能找到你的主class去运⾏,否则将会出现“jar中没有主清单属性”的错误。
Unity中加入Android项目的Build步骤
Unity中加⼊Android项⽬的Build步骤简介:有的项⽬需要在Android中加⼊Unity功能,例如有的项⽬需要在Unity中加⼊Android功能,例如由于Android中的功能和代码只能当作⼀个Unity插件,需要在Unity进⾏最终的Build后⽣成apk⽂件运⾏。
所以⽆论上⾯两种情况都涉及了在Unity中加⼊Android项⽬的Build步骤:步骤:1.确保Android⼯程代码正确,然后在Eclipse中build⼀下,使所有类都⽣成.class⽂件。
2.将所有.class⽂件打成jar包例如我现在的⼯程⽬录为:C:\Users\95\Documents\GitHub\3D_Sphere\3DVoiceWeather。
编译好的.class⽂件都在⼯程⽬录下的\bin\classes中。
打开cmd中cd到这个⽬录:cd C:\Users\95\Documents\GitHub\3D_Sphere\3DVoiceWeather\bin\classes执⾏命令:jar -cvf class.jar *没有意外就会在当前⽬录下⽣成⼀个class.jar,如下图:3.将Android⼯程放⼊Unity中在Unity中建⽴⼀个Plugins⽂件夹,在Plugins下建⽴Android⽂件夹(不能写错,不能修改)。
将Android⼯程中的res⽂件夹,libs⽂件夹(如果有的话)和AndroidManifest.xml⽂件copy到Plugins-Android下:在Plugins-Android之下再创建⼀个bin⽂件夹,将之前⽣成的class.jar复制进去(名字随意)。
4.在设置Build参数1.点击菜单2.file3.Build Settings4.选择Android,并点击add current加⼊当前场景5.点击Player Settings:按下图设置Build参数,包括公司名,产品名,图标等等。
idea中如何将单个java类导出为jar包文件?
idea中如何将单个java类导出为jar包⽂件? idea作为⼀个java开发的便利IDE⼯具,个⼈是⽐较喜欢的,今天来探索个⼩功能:导出单个类⽂件为jar包! 偶有这种需求,就是某个类⽂件独⽴存在,但是需要将其导出为jar,供别⼈临时使⽤,或者⼀些必要的场合,如:编写⼀些特殊的agent使⽤。
不想为某个单个⽂件写⼀个项⽬,就想把代码加载在某个项⽬的⾓落⾥,怎样将该单个类⽂件导出为jar包呢?1. 写好功能⼯具类,如:public class Hello {public static void main(String[] args) throws Exception {Hello hello = new Hello();hello.sayHello("word. bingo!");}public void sayHello(String word) {System.out.println("hello, " + word);}}2. 点击idea中的 File -> Project Structure... -> Artifacts -> 添加+ -> JAR -> Empty填写好jar name,添加好对应的资源⽂件。
先创建好与包名对应的⽂件⽬录结构(⽬录结构不⼀致可能导致后续使⽤jar⽂件时报class not found exception),图解如下:最后,加载编写出的单个类⽂件(编译后的 .class ⽂件,⼀般在 target ⽬录下),如下图打开添加file, 找到⽂件。
加载后,⽂件如下,设置好jar⽂件的输出⽬录,点击ok关闭对话框:3. 编写清单⽂件 MANIFEST.MF,如有必要,再将打开 Project Structure...点击 Create new ManiFest,选择位置,然后创建⼀个默认的 MANIFEST.MF。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将CLASS文件生成JAR文件常常在网上看到有人询问:如何把java 程序编译成.exe 文件。
通常回答只有两种,一种是制作一个可执行的JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用JET 来进行编译。
但是JET 是要用钱买的,而且据说JET 也不是能把所有的Java 程序都编译成执行文件,性能也要打些折扣。
所以,使用制作可执行JAR 文件包的方法就是最佳选择了,何况它还能保持Java 的跨平台特性。
下面就来看看什么是JAR 文件包吧:1. JAR 文件包JAR 文件就是Java Archive File,顾名思意,它的应用是与Java 息息相关的,是Java 的一种文档格式。
JAR 文件非常类似ZIP 文件——准确的说,它就是ZIP 文件,所以叫它文件包。
JAR 文件与ZIP 文件唯一的区别就是在JAR 文件的内容中,包含了一个META-INF/MANIFEST.MF 文件,这个文件是在生成JAR 文件的时候自动创建的。
举个例子,如果我们具有如下目录结构的一些文件:==`-- test`-- Test.class把它压缩成ZIP 文件test.zip,则这个ZIP 文件的内部目录结构为:test.zip`-- test`-- Test.class如果我们使用JDK 的jar 命令把它打成JAR 文件包test.jar,则这个JAR 文件的内部目录结构为:test.jar|-- META-INF|`-- MANIFEST.MF`-- test`--Test.class2. 创建可执行的JAR 文件包制作一个可执行的JAR 文件包来发布你的程序是JAR 文件包最典型的用法。
Java 程序是由若干个 .class 文件组成的。
这些.class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给CLASSPA TH 环境变量或者java 命令的-cp 参数;运行时还要到控制台下去使用java 命令来运行,如果需要直接双击运行必须写Windows 的批处理文件(.bat) 或者Linux 的Shell 程序。
因此,许多人说,Java是一种方便开发者苦了用户的程序设计语言。
其实不然,如果开发者能够制作一个可执行的JAR 文件包交给用户,那么用户使用起来就方便了。
在Windows 下安装JRE(Java Runtime Environment) 的时候,安装文件会将.jar 文件映射给javaw.exe 打开。
那么,对于一个可执行的JAR 文件包,用户只需要双击它就可以运行程序了,和阅读.chm 文档一样方便(.chm 文档默认是由hh.exe 打开的)。
那么,现在的关键,就是如何来创建这个可执行的JAR 文件包。
创建可执行的JAR 文件包,需要使用带cvfm 参数的jar 命令,同样以上述test 目录为例,命令如下:jar cvfm test.jar manifest.mf test这里test.jar 和manifest.mf 两个文件,分别是对应的参数 f 和m,其重头戏在manifest.mf。
因为要创建可执行的JAR 文件包,光靠指定一个manifest.mf 文件是不够的,因为MANIFEST 是JAR 文件包的特征,可执行的JAR 文件包和不可执行的JAR 文件包都包含MANIFEST。
关键在于可执行JAR 文件包的MANIFEST,其内容包含了Main-Class 一项。
这在MANIFEST 中书写格式如下:Main-Class: 可执行主类全名(包含包名)例如,假设上例中的Test.class 是属于test 包的,而且是可执行的类(定义了public static void main(String[]) 方法),那么这个manifest.mf 可以编辑如下:Main-Class: test.Test <回车>;这个manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有Main-Class: test.Test 一行,且该行以一个回车符结束即可。
创建了manifest.mf 文件之后,我们的目录结构变为:==|-- test|`-- Test.class`-- manifest.mf这时候,需要到test 目录的上级目录中去使用jar 命令来创建JAR 文件包。
也就是在目录树中使用“==”表示的那个目录中,使用如下命令:jar cvfm test.jar manifest.mf test之后在“==”目录中创建了test.jar,这个test.jar 就是执行的JAR 文件包。
运行时只需要使用java -jar test.jar命令即可。
需要注意的是,创建的JAR 文件包中需要包含完整的、与Java 程序的包结构对应的目录结构,就像上例一样。
而Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的test.Test;而且在没有打成JAR 文件包之前可以使用java <类名>; 来运行这个类,即在上例中java test.Test 是可以正确运行的(当然要在CLASSPATH 正确的情况下)。
3. jar 命令详解jar 是随JDK 安装的,在JDK 安装目录下的bin 目录中,Windows 下文件名为jar.exe,Linux 下文件名为jar。
它的运行需要用到JDK 安装目录下lib 目录中的tools.jar 文件。
不过我们除了安装JDK 什么也不需要做,因为SUN 已经帮我们做好了。
我们甚至不需要将tools.jar 放到CLASSPATH 中。
使用不带任何的jar 命令我们可以看到jar 命令的用法如下:jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名...其中{ctxu} 是jar 命令的子命令,每次jar 命令只能包含ctxu 中的一个,它们分别表示:-c创建新的JAR 文件包-t列出JAR 文件包的内容列表-x展开JAR 文件包的指定文件或者所有文件-u更新已存在的JAR 文件包(添加文件到JAR 文件包中)[vfm0M] 中的选项可以任选,也可以不选,它们是jar 命令的选项参数-v生成详细报告并打印到标准输出-f指定JAR 文件名,通常这个参数是必须的-m指定需要包含的MANIFEST 清单文件-0只存储,不压缩,这样产生的JAR 文件包会比不用该参数产生的体积大,但速度更快-M不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m 参数[jar-文件] 即需要生成、查看、更新或者解开的JAR 文件包,它是-f 参数的附属参数[manifest-文件] 即MANIFEST 清单文件,它是-m 参数的附属参数[-C 目录] 表示转到指定目录下去执行这个jar 命令的操作。
它相当于先使用cd 命令转该目录下再执行不带-C 参数的jar 命令,它只能在创建和更新JAR 文件包的时候可用。
文件名... 指定一个文件/目录列表,这些文件/目录就是要添加到JAR 文件包中的文件/目录。
如果指定了目录,那么jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。
下面举一些例子来说明jar 命令的用法:1) jar cf test.jar test该命令没有执行过程的显示,执行结果是在当前目录生成了test.jar 文件。
如果当前目录已经存在test.jar,那么该文件将被覆盖。
2) jar cvf test.jar test该命令与上例中的结果相同,但是由于v 参数的作用,显示出了打包过程,如下:标明清单(manifest)增加:test/(读入= 0) (写出= 0)(存储了0%)增加:test/Test.class(读入= 7) (写出= 6)(压缩了14%)3) jar cvfM test.jar test该命令与2) 结果类似,但在生成的test.jar 中没有包含META-INF/MANIFEST 文件,打包过程的信息也略有差别:增加:test/(读入= 0) (写出= 0)(存储了0%)增加:test/Test.class(读入= 7) (写出= 6)(压缩了14%)4) jar cvfm test.jar manifest.mf test运行结果与2) 相似,显示信息也相同,只是生成JAR 包中的META-INF/MANIFEST 内容不同,是包含了manifest.mf 的内容5) jar tf test.jar在test.jar 已经存在的情况下,可以查看test.jar 中的内容,如对于2) 和3) 生成的test.jar 分别应该此命令,结果如下;对于2)META-INF/META-INF/MANIFEST.MFtest/test/Test.class对于3)test/test/Test.class6) jar tvf test.jar除显示5) 中显示的内容外,还包括包内文件的详细信息,如:0 Wed Jun 19 15:39:06 GMT 2002 META-INF/86 Wed Jun 19 15:39:06 GMT 2002 META-INF/MANIFEST.MF0 Wed Jun 19 15:33:04 GMT 2002 test/7 Wed Jun 19 15:33:04 GMT 2002 test/Test.class7) jar xf test.jar解开test.jar 到当前目录,不显示任何信息,对于2) 生成的test.jar,解开后的目录结构如下:==|-- META-INF|`-- MANIFEST`-- test`--Test.class8) jar xvf test.jar运行结果与7) 相同,对于解压过程有详细信息显示,如:创建:META-INF/展开:META-INF/MANIFEST.MF创建:test/展开:test/Test.class9) jar uf test.jar manifest.mf在test.jar 中添加了文件manifest.mf,此使用jar tf 来查看test.jar 可以发现test.jar 中比原来多了一个manifest。
这里顺便提一下,如果使用-m 参数并指定manifest.mf 文件,那么manifest.mf 是作为清单文件MANIFEST 来使用的,它的内容会被添加到MANIFEST 中;但是,如果作为一般文件添加到JAR 文件包中,它跟一般文件无异。
10) jar uvf test.jar manifest.mf与9) 结果相同,同时有详细信息显示,如:增加:manifest.mf(读入= 17) (写出= 19)(压缩了-11%)4. 关于JAR 文件包的一些技巧1) 使用unzip 来解压JAR 文件在介绍JAR 文件的时候就已经说过了,JAR 文件实际上就是ZIP 文件,所以可以使用常见的一些解压ZIP 文件的工具来解压JAR 文件,如Windows 下的WinZip、WinRAR 等和Linux 下的unzip 等。