jar -h
非法选项: h
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:
-c 创建新档案
-t 列出档案目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有档案
-v 在标准输出中生成详细输出
-f 指定档案文件名
-m 包含指定清单文件中的清单信息
-n 创建新档案后执行 Pack200 规范化
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储; 不使用任何 ZIP 压缩
-P 保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含以下文件
如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序
与 'm', 'f' 和 'e' 标记的指定顺序相同。
示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 'mymanifest' 并
将 foo/ 目录中的所有文件归档到 'classes.jar' 中:
jar cvfm classes.jar mymanifest -C foo/ .
1. 指示に関する注意事項
1. jar の後ろの {ctxui}[vfmn0PMe] にはダッシュ-を追加しないでください。ダッシュ-を使用できるのは -C のみです。追加しないとエラーが報告されます。
2. jar の背後にある {ctxui}[vfmn0PMe] を個別に記述することはできません。個別に記述すると、エラーが報告されます。
3. 4 つのパラメータのうち 1 つ {ctxui} を選択する必要があります。[vfmn0PMe] はオプションのパラメータで、ファイル名も必須です。
4. 指定されたマニフェスト ファイルの後には m が続く必要があります。M はマニフェスト ファイルを作成しないことを意味します。
5. マニフェスト ファイル名、アーカイブ ファイル名、およびエントリ ポイント名の順序は、「m」、「f」、および「e」タグの指定された順序と同じである必要があります。
6. -C の後にディレクトリが続きます。これは、ディレクトリ内のファイルのみがパッケージ化されることを意味します。-C directory/ .midpoint 。ディレクトリ内の任意のファイルを意味します。ディレクトリ内の特定のファイルをパックする場合は、次のようにする必要があります。ファイルを 1 つずつリストします。; のフルパス名
7. -C を使用しない場合は、パッケージ化するファイルを jar コマンドの後にリストする必要があります。
8.ファイル ... 1 つまたは複数のファイルを表します。
9. e は、実行可能 jar パッケージのエントリ ポイントを指定します。これは、com.crland.Welcome などの完全なパス名である必要があります。
2. 練習する
1. プロジェクトカタログ
package com.crland;
public class Welcome {
public static void main(String[] args) {
Teacher.greeting();
}
}
package com.crland;
public class Teacher {
public static void greeting() {
System.out.println("welcome xiaoliu");
}
}
2. ソースファイルを編集する
ソース ファイルをコンパイルするには、javac コマンドを使用する必要があります。まずプロジェクト ディレクトリに入り、次に javac コマンドを使用します。
E:\codes\idea\HelloCode\testjar> javac -d out -sourcepath src .\src\main\java\com\crland\Teacher.java .\src\main\java\com\crland\Welcome.java
コマンド実行後、outディレクトリにclassクラスファイルが生成されます。
生成されたクラス ファイルも、元のパッケージ ディレクトリに従って編成されていることがわかります。
javac コマンドの使用法を簡単に見てみましょう。
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名
3. バイトコードファイルをパックする
1. すべてのバイトコード ファイルをパッケージ化してエントリ ポイントを提供し、実行可能な jar パッケージにパッケージ化します。
E:\codes\idea\HelloCode\testjar> jar vcfe test1.jar com.crland.Welcome -C out/ .
已添加清单
正在添加: com/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: com/crland/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: com/crland/Teacher.class(输入 = 413) (输出 = 293)(压缩了 29%)
正在添加: com/crland/Welcome.class(输入 = 322) (输出 = 237)(压缩了 26%)
梱包結果は以下の通りです。
test1.jar を別のディレクトリにコピーし、java コマンドを使用して jar パッケージの実行可能ファイルを実行します。
C:\Users\liuqinhou\Desktop\test> java -jar .\test1.jar
welcome xiaoliu
jar パッケージが正常に実行されたことがわかります。
注意点:
1. fe パラメータの順序は、test1.jar com.crland.Welcome の順序と一致している必要があります。
2. 最後のポイントは、すべてのファイルを out ディレクトリにパックすることを意味します。
2. 指定したファイルのみをディレクトリにパッケージ化する場合は、コマンドの最後にファイル パスを指定する必要があります。
E:\codes\idea\HelloCode\testjar> jar vcfe test2.jar com.crland.Welcome -C out/ com/crland/Welcome.class
上記のコマンドは、com/crland/Welcom.class ファイルを out/ ディレクトリにパッケージ化するだけであり、パッケージ化の結果は次のようになります。