运行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
思想?
答案 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 ...
)
)