一、简介
在简短的这篇文章中,以编程方式创建创建文件的过程。在编写软件时,最终我们需要在将其放置到生产状态的情况下,可以使用各种文件的类路径。通常操作,处理文件的方法是更方便。对于 Java,执行此文件的标准使用 JAR、WAR 或 EAR。
内容基本流程是写manifest,打开jar,添加,最后关闭jar。
2.罐子文件剖析
jar 文件是 ZIP 文件格式的扩展,包含清单文件。清单文件是特定于 JAR 文件的特殊性,可能包含各种设置。其中一些是主类、数据(即作者、版本可选等)和代码签名信息。
我们可能会使用与 zipRar 的工具()来查看和提取部分或全部文件。我们目录还可以包含一个文件或库。或目录。
3. 创建一个JarTool
类
为了创建对象的 JAR 过程,我们创建了一个普通的 Java(POJO),来创建我们的文件,我们可能将包含一个旧目录的操作文件,或文件或文件。
我们还可以创建方法来从 JAR 中执行删除,甚至将附件附加到现有的 JAR 中,尽管这些操作需要完全运行和运行 JAR。
3.1。 JAR 清单
为了创建 JAR 文件,我们必须首先开始清单:
public class JarTool { private Manifest manifest = new Manifest(); public void startManifest() { manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); } }
如果希望罐子是主程序的,我们必须设置类:
public void setMainClass(String mainFQCN) { if (mainFQCN != null && !mainFQCN.equals("")) { manifest.getMainAttributes().put(Attributes.Name.MAIN_CLASS, mainFQCN); } }
另外,如果我们想指定其他属性,我们可以将它们添加到清单中,例如:
addToManifest("Can-Redefine-Classes", "true");
这是那个方法:
public void addToManifest(String key, String value) { manifest.getMainAttributes().put(new Attributes.Name(key), value); }
3.2.打开JAR进行写作
清单完成后,我们现在可以将文件写入 JAR 文件。
public JarOutputStream openJar(String jarFile) throws IOException { return new JarOutputStream(new FileOutputStream(jarFile), manifest); }
3.3.将文件添加到Jar
将文件添加到 JAR 时,Java 使用 Solaris 添加依赖样式的名称使用正斜字体作为空白目录,请注意,我们可以使用任何类型的任何文件,包括其他 JAR 文件或或用于包含此样式项非常方便。
另外,因为 JAR 文件是类路径的一种形式,所以我们指定我们希望在 JAR 中使用的路径的哪一部分。为了我们的绝对目的,根路径将是我们项目的类路径。
了解了这一点,我们现在可以用这个完成我们的JarTool
类:
public void addFile(JarOutputStream target, String rootPath, String source) throws FileNotFoundException, IOException { String remaining = ""; if (rootPath.endsWith(File.separator)) { remaining = source.substring(rootPath.length()); } else { remaining = source.substring(rootPath.length() + 1); } String name = remaining.replace("\\","/"); JarEntry entry = new JarEntry(name); entry.setTime(new File(source).lastModified()); target.putNextEntry(entry); BufferedInputStream in = new BufferedInputStream(new FileInputStream(source)); byte[] buffer = new byte[1024]; while (true) { int count = in.read(buffer); if (count == -1) { break; } target.write(buffer, 0, count); } target.closeEntry(); in.close(); }
4. 一个工作示例
争取工作样片是罐子里的最低要求,我们将写一个应用程序,然后看看它是如何的:
public class Driver { public static void main(String[] args) throws IOException { JarTool tool = new JarTool(); tool.startManifest(); tool.addToManifest("Main-Class", "com.baeldung.createjar.HelloWorld"); JarOutputStream target = tool.openJar("HelloWorld.jar"); tool.addFile(target, System.getProperty("user.dir") + "\\src\\main\\java", System.getProperty("user.dir") + "\\src\\main\\java\\com\\baeldung\\createjar\\HelloWorld.class"); target.close(); } }
HelloWorld 类是一个非常简单的类,只需打印一个 main() 方法就可以输出文本:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
为了证明它有效,我们有这个例子:
$ javac -cp src/main/java src/main/java/com/baeldung/createjar/HelloWorld.java $ javac -cp src/main/java src/main/java/com/baeldung/createjar/JarTool.java $ javac -cp src/main/java src/main/java/com/baeldung/createjar/Driver.java $ java -cp src/main/java com/baeldung/createjar/Driver $ java -jar HelloWorld.jar Hello World!
在这里打印,我们编写了各种类,然后执行Driver
类,创建HelloWorld
jar。最后,我们执行了jar,这会导致“Hello World”消息。
上面的命令应该从项目位置执行。
5. 落幕
在本教程中,我们了解了如何以编程方式创建 jar 文件、向其中添加文件并最终执行它。
0 评论