创建jar命令找不到文件

时间:2016-09-24 04:01:49

标签: java windows

build> jar cvfe test\MyJavaLibrary.jar Main -C test\java Main.class foo\SomeClass.class
foo\SomeClass.class : no such file or directory
added manifest
adding: Main.class(in = 444) (out= 308)(deflated 30%)

相应的目录结构是

build/
  test/
    java/
      foo/
        SomeClass.class
      Main.class

使用test\java\foo\SomeClass.class作为最后一个参数时,它可以正常工作,这很奇怪。很好,但是当我为第一个参数执行相同操作时,这不起作用,即test\java\Main.class。这种行为似乎非常不一致。

为什么找不到foo\SomeClass.class,或者更好的是,创建Jar的正确方法是什么?

  

java版“1.8.0_102”

2 个答案:

答案 0 :(得分:1)

您从命令行运行的可执行文件似乎从build目录开始,因此,它不知道foo\SomeClass.class文件相对于{{1}的位置这也解释了为什么build有效(它知道如何找到相对于执行目录的文件)。

如果你在test\java\foo\SomeClass.class内的顶层有foo文件夹,我相信它会正常工作,但因为build嵌套在两层目录中,所以可执行文件不知道在哪里查找当前目录中具有该名称的文件夹。

答案 1 :(得分:1)

我刚刚在以前没见过的文档页面中找到答案。

  

-C dir   在处理以下inputfiles参数时暂时将目录更改为dir。允许多个-C dir输入文件集。

显然,需要为每个输入放置-C参数,而不只是指定一次。

来源:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jar.html