如何在文件树中创建带有入口点的jar文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在文件树中创建带有入口点的jar文件?相关的知识,希望对你有一定的参考价值。

我正在尝试使用此命令创建一个jar文件:

jar -cef ./bin/a/MainClass formatter.jar ./bin/*

bin包含两个带有类文件的文件夹(比如“./bin/a/”和“./bin/b/”)。

我可以很好地创建jar,但我似乎无法让它正确执行。它运行时无需打印或执行任何操作。我认为它一定不能使用我提供的入口点。

MainClass有一个简单的主方法:

public static void main(String[] args) {
   System.out.println("HIT");
}

我究竟做错了什么?是否有必要在与包含main的类相同的文件夹中创建jar?

编辑:jar -tf按要求:

C:UsersJonathanDocumentsWorkspaceJavaAutoFormatter>jar -tf formatter.jar
META-INF/
META-INF/MANIFEST.MF
bin/a/
bin/a/MainClass.class
bin/a/ParsedFile.class
bin/b/
bin/b/Token.class
bin/b/Tokenifier.class
答案

看到这个tutorialjar命令的e选项的参数应该是类名,而不是路径名。此外,在指定要包含在jar中的类列表时,应注意引用文件,使目录结构与包名匹配。否则,类路径查找将失败。尝试:

jar -cef a.MainClass formatter.jar -C bin .
另一答案

来自Wikipedia JAR(Java ARchive)是一种包文件格式,通常用于将许多Java类文件以及关联的元数据和资源(文本,图像等)聚合到一个文件中进行分发。

JAR文件是包含特定于Java的清单文件的归档文件。它们基于ZIP格式构建,通常具有.jar文件扩展名。

jar cvfem <f input> <e input> <m input> input_files
jar cvfem Program.jar com.company.app.Main manifest.txt com net ..img.png 
          ___________ ____________________ ____________ __________________
               ^                 ^               ^       ^
               |                 |               |       |
               f                 e               m      input files

哪里

  • c =创建Jar文件。
  • v =详细输出。详细输出告诉您每个文件的名称,因为它已添加到JAR文件中。
  • f =输出到文件而不是stdout。
  • e =罐子里的入口点。对于使用java -jar Program.jar运行jar文件。
  • m =显示额外数据。

Manifest.txt内容

Created-by: Joma
  • input_files = file,输入文件的dir用空格分隔。

导致Jar内容

 __ com    
|  |__ company
|     |__ app
|     |    Main.class
|     |    Class1.class
|     |    Class2.class
|     |__ content
|         Class3.class
|         Class4.class
|         Class5.class  
|__ net
|    file1.txt
|   file2.txt
|__ img.png
|__ META-INF
    MANIFEST.MF

以上是关于如何在文件树中创建带有入口点的jar文件?的主要内容,如果未能解决你的问题,请参考以下文章

在jar文件夹中创建文件

如何在 IntelliJ IDEA 中创建 .jar 文件或导出 JAR(如 Eclipse Java 存档导出)? [复制]

HSQLDB:如何指定可以找到带有 SQL/JRT 函数的 JAR 文件的位置?

如何在片段中创建选项卡的示例?

在 IntelliJ IDEA 中创建 Java Gradle 项目并构建 .jar 文件 - 如何?

在片段android中创建listview