FileNotFoundException使用JAR命令在批处理文件

时间:2017-07-25 21:52:40

标签: java batch-file filenotfoundexception

运行Java 1.8.0_141。也遇到了1.8.0_121的问题。我

运行以下命令将WAR的内容提取到临时目录:

mkdir temp
cd temp
%JAVA_HOME%\bin\jar -xvf ..\petclinic_sdk.war

我可以在此处找到我正在使用的petclinic_sdk示例项目:https://github.com/spring-projects/spring-petclinic

似乎正确地提取了所有内容,但似乎尝试提取WAR中包含的库。我收到这个错误:

java.io.FileNotFoundException: org.springframework.web.servlet-3.0.5.RELEASE.jar
 (The system cannot find the file specified)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at sun.tools.jar.Main.run(Main.java:261)
    at sun.tools.jar.Main.main(Main.java:1288)

提取后,JAR位于/temp/WEB-INF/lib/org.springframework.web.servlet-3.0.5.RELEASE.jar中。

问题是我需要临时目录来清除临时文件。因为它似乎也试图提取那些JAR,所以/ temp充满了jartmp ******************。tmp文件:temp directory after extraction

思想?

1 个答案:

答案 0 :(得分:0)

我的错误。我的包含上面代码的循环是递归的。

此处的工作代码:

@echo off
setlocal EnableDelayedExpansion

for %%i in (*) do (
   if %%~xi == .jar (
        rem ...
   )
   if %%~xi == .war (
       set foo=%%~ni%.war
       mkdir temp
       cd temp
       %JAVA_HOME%\bin\jar -xvf ..\!foo! 
       rem ...
   )

   if %%~xi == .ear (
        rem ...
   )
)