java如何实现用不同于系统打包规则的方法打包文件

java老师的意思是,Windows系统自带打包规则是RAR还是ZIP什么的。。要用不同于这两种规则的方法打包成一个新的压缩文件,用系统RAR打不开= =这个意思,,请问系统的打包规则是什么,不同于系统的还有什么?
这个要求是英语保护个人数据隐私,当电脑无疑被他人使用,或移动存储数据被他人无意获取时,由于是个人格式打包,别人无法正常摊开数据,也就无法进行进一步破解。
打包U规则越复杂,破解难度越大。

请问这个“打包”是单纯地将几个文件打包入一个文件夹还是需要压缩在压缩包里?

制作双击可以直接运行的jar包

1. JAR 文件包

JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。举个例子,如果我们具有如下目录结构的一些文件:

.\com\fieldstar\isdet\chap9 (文件夹)

AppletSecurityDemo.class (是一个Applet)

Ball.class (是一个Application)

如果我们使用 JDK 的 jar 命令把它打成 JAR 文件包 fieldstar.jar,

jar cvf fieldstar.jar com

当前文件夹中com文件夹下的所有文件都被加进fieldstar.jar文件包中.

但是这个jar包并不是双击直接运行的包。

这个 JAR 文件的内部目录结构为:

fieldstar.jar

|-- META-INF

| `-- MANIFEST.MF

|`-- \com\fieldstar\isdet\chap9

`--AppletSecurityDemo.class

`--Ball.class

java -cp fieldstar.jar com.fieldstar.isdet.chap9.Ball

2. 创建可执行的 JAR 文件包

制作一个可执行的 JAR 文件包来发布你的程序是 JAR 文件包最典型的用法。

Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 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 fieldstar.jar manifest.mf com

这里 fieldstar.jar 和 manifest.mf 两个文件,分别是对应的参数 f 和 m,其重头戏在 manifest.mf。因为要创建可执行的 JAR 文件包,光靠指定一个 manifest.mf 文件是不够的,因为 MANIFEST 是 JAR 文件包的特征,可执行的 JAR 文件包和不可执行的 JAR 文件包都包含 MANIFEST。关键在于可执行 JAR 文件包的 MANIFEST,其内容包含了 Main-Class 一项。这在 MANIFEST 中书写格式如下:

Main-Class: 可执行主类全名(包含包名)

例如,假设上例中的 Ball.class 是属于 com.fieldstar.isdet.chap9的,而且是可执行的类 (定义了 public static void main(String[]) 方法),那么:

应该先用文本编辑器建立一个manifest.mf文件;

这个 manifest.mf 可以编辑如下:

Main-Class: test.Test <回车>;

这里是:

Main-Class: com.fieldstar.isdet.chap9.Ball

这个 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且该行以一个回车符结束即可。

之后在当前目录中创建了 fieldstar.jar,这个 fieldstar.jar 就是执行的 JAR 文件包。运行时只需要使用 java -jar test.jar 命令即可。

或双击该jar文件运行.

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 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。
温馨提示:内容为网友见解,仅供参考
无其他回答

java如何实现用不同于系统打包规则的方法打包文件
Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数;运行时还要到控制台下去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat)...

java如何将引用了第三方模块的A项目打包成jar包后,在B项目中引用A项目...
第一步:把打好的A项目的jar包,放到B项目的某个目录下 第二步:在B项目中的pom文件中引入这个jar包 引入举例:<dependency> <groupId>A项目中pom的groupId<\/groupId> <artifactId>A项目中pom的artifactId<\/artifactId> <type>jar<\/type> <version>1.0.0<\/version> <\/dependency> 第三步,...

Java之规则引擎 Easy Rules
Java规则引擎Easy Rules提供了一种强大的工具,用于处理基于条件和动作的计算问题。它不同于传统的命令式编程,采用了生产规则系统模型,类似于一组if-then语句,规则按顺序执行,但引擎会灵活决定执行顺序。Easy Rules易于集成到大型系统中,其使用方式包括注解、链式编程、表达式配置和YAML文件。入门可通过创...

将Java类打成jar包,可独立运行
1. 在菜单栏选择File -> Project Structure -> Artifacts -> + -> JAR -> from modules with dependencies…2. 在Main Class中选择要打包的类 3. 点击OK,将.class文件加入JAR 注意:如果类存在包名,需要一级一级建立与之对应的包名 4. Apply -> OK 5. build jar包(Build -> Build Arti...

用JSP(MVC模式)实现文件的打包下载功能
\/\/以下为下载的主要方法 File file=new File(nd.getDownpath());if(file.exists()){ System.out.println("该下载路径或者文件已存在");try{ \/\/输出文件用的字节数组,每次发送500个字节到输出流:byte b[]=new byte[500];\/\/客户使用保存文件的对话框:response.setHeader("Content-disposition",...

如何把java程序变成安装包
首先,利用 Eclipse 自身功能导出 jar 文件。具体步骤如下:在项目上右键选择 "Export"。在弹出的对话框中展开 "Java" 选项,选择 "Runnable JAR File",然后点击 "Next"。接下来,选择主类、jar 包的输出位置,以及依赖包的打包方式。最后,点击 "Finish" 完成操作。接下来,若想进一步转换成可执行...

java调用两个不同的方法怎么办?
1、java是强匹配的,调用方法,对应的参数必须要有值,如果不是必须传的,意思是你可能不需要用的,可以传null 2、或者改造原有的方法参数,把多余的参数去掉 3、或者另外写一个方法,少参数的,然后该方法内部,调用原来的方法 4、代码截图如下:5、看代码,13行的,就相当于调用少一个参数的 ...

.Java是如何通过访问控制修饰符和包实现类的封装的?
③不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。<3> 最终域:用final修饰的域,实际上就是Java中的常量。用final修饰符说明常量时,需要注意以下几点:①需要说明常量的数据类型。②需要同时指出常量的具体取值。③因为所有类对象的常量成员,其数值都固定一致,为了节省空间,...

java实现压缩包里不同excel文件的导入
相反,XSSFWorkbook专门用于读取xlsx类型的文件,HSSFWorkbook则用于读取xls类型的文件。解决办法是根据上传文件的类型选择正确的工具。对于xls文件,使用HSSFWorkbook;对于xlsx文件,则使用XSSFWorkbook。确保在处理不同格式的excel文件时,选择相应的工具以避免兼容性问题。

在实际Java开发中,真会有一个Service需要多个实现类的需要吗?
另外,使用多个实现类还可以用于实现不同的业务场景。例如,在一个电商网站中,不同的商品类别可能具有不同的销售策略,例如满减、折扣等,此时可以使用不同的实现类来实现不同的销售策略。因此,在实际Java开发中,使用多个实现类可以提高代码的灵活性和可扩展性,使得系统更加易于维护和扩展。

相似回答