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

时间:2014-05-20 19:09:02

标签: java jar entry-point

我正在尝试使用此命令创建一个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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

  

来自维基百科   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 = jar中的入口点。对于使用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