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

问题描述 投票:2回答:2

我正在尝试使用此命令创建一个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:\Users\Jonathan\Documents\Workspace\JavaAutoFormatter>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
java jar entry-point
2个回答
3
投票

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

jar -cef a.MainClass formatter.jar -C bin .

0
投票

来自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
© www.soinside.com 2019 - 2024. All rights reserved.