maven…无法清理项目:无法删除.. \ org.ow2.util.asm-asm-tree-3.1.jar


71

我使用STS(弹簧工具套件)+ maven插件。

每次当我使用我的应用程序运行时,都会maven-clean看到以下错误:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building hhsystem ui 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ ui ---
[INFO] Deleting C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.471s
[INFO] Finished at: Mon Oct 21 12:34:33 MSK 2013
[INFO] Final Memory: 2M/90M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on project ui: Failed to clean project: Failed to delete C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target\org.ow2.util.asm-asm-tree-3.1.jar -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

我必须关闭STSC:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target并删除org.ow2.util.asm-asm-tree-3.1.jar

再次启动STS后,它可以工作,但这很麻烦。

您能帮我解决这个问题吗?


Kalathoki L.的更新

maven-clean从这种状态运行:

STS屏幕截图

我从命令行看到与eclipse插件相同的行为

如果我在STS运行时观看解锁器,我会看到

解锁屏幕截图


您正在使用哪个服务器?
Yubaraj

我使用的是Apache Tomcat 7

2
确保停止了停止使用同一服务器的所有进程
lakshmi

TL; DR答案:1.如果您在Eclipse之外打开了任何项目工件,请关闭它并重试。2.如果不起作用,请重新启动eclipse。
lupchiazoem

Answers:


56

开始清洁之前,请先停止服务器。

停止服务器

您可以从“服务器”视图停止服务器。

要停止服务器:

  1. 在“服务器”视图(“窗口”>“显示视图”>“其他”>“服务器”>“服务器”>“确定”)中,选择要停止的服务器。
  2. 单击工具栏中的“停止服务器” 这个图标。在“服务器”视图中,服务器的状态更改为“已停止”。
  3. 如果由于某种原因服务器无法停止,则可以按以下步骤终止该过程:

    一种。切换到“调试”透视图。

    b。在“进程”视图中,选择要停止的服务器进程。

    C。单击 工具栏中的“终止” 这是终止的图像图标。

注意:终止服务器时,服务器进程将结束,并且服务器将不会经历正常的停止例程,例如,在Servlet上调用destroy()方法。

来源: Eclipse帮助


我该怎么做?我想查看更多详细信息。

@ user2740224请参阅停止服务器
Yubaraj 2013年

当我使用Maven-clean

我不想重新启动服务器,因为重新启动需要太多时间。我该怎么办?我的朋友不需要重新启动它
Rafael Andrade

VSCode中的情况如何?
Ashok kumar Ganesan


25

在任务管理器中删除java.exe进程并运行mvn clean install。


1
有没有办法做到这一点?我的服务器需要一些时间才能上线,而我不希望=(
Rafael Andrade

这对我有用。但是,我想知道它为什么起作用。您怎么知道java.exe是唯一一个在jar上带有“锁”的文件。
MasterJoe

这对我有用,但是没有停止服务器的“适当”方法吗?我从命令行使用mvnw启动了它...也没有办法停止它吗?
Svend Hansen

15

您的问题是,在执行mvn clean命令时,STS中正在运行的进程正在使用位于目标目录中的文件。Maven将无法删除这些文件(因为其他进程仍在访问它们),因此失败并显示该错误。

在运行Maven控制台命令之前,请尝试从STS停止所有进程(测试,服务器,应用程序)。注意:如果STS正在清理项目并因此重新编译源代码,而不运行进程,则也可能会出现此行为。


1
您能要求除Kalathoki L
gstackoverflow

1
我该如何解决?**注意:如果STS正在清理项目并因此重新编译源代码,而不运行进程,则可能也会出现此行为。**

您的
才华横溢

9

可能有许多使用已编译源的进程,可能是服务器,旧的maven指令或IDE。确保终止所有进程,停止服务器,然后再次执行maven。如果问题仍然存在,则应关闭java.exe进程。

问候!


1
自从我加了2美分以来,这个答案有所扩展:例如,它可能是像Google Drive这样的文件夹同步过程正在占用您的文件。就我而言,这就是问题所在。只需终止该过程,即可再次进行构建。
Sargon1年

这是我的解决方案。我有一个意外的java.exe进程在后台运行,这阻止了Maven正确执行。
迈克尔·法亚德

7

尝试禁用“项目”->“自动构建”。

正如Scorpio所建议的,正在运行一个进程,该进程已锁定某处的文件。

我有一个大型的多模块Maven项目,该项目经常在清理时失败,这为我解决了这个问题。完成后,我会自动重新启用“构建”。


7

在mvn clean之前,关闭目标文件夹及其打开的文件


2
这对我有用。我在终端中打开了目标文件夹,这使Maven无法清理目标文件夹。后cd该文件夹的-ing了,行家才得以再次清洁。
Idva '17

是的,我在Windows资源管理器中打开了该文件夹!
帕维尔

1
在Windows资源管理器中打开了文件夹。这有帮助!
lpkej

5

摘要:使用一个外部脚本(批处理文件),该脚本可以a)停止服务器,b)在运行maven-clean之前解锁.jar文件。

脚步:

  1. 将maven-antrun-plugin:run目标绑定到mvn clean的预清理阶段。在这里查看如何执行此操作

  2. 在此处查看如何使用antrun插件在Windows中运行外部批处理文件:sblundy对“启动外部进程”的回答。叫这个文件unlock_handles.bat

  3. 使用pre_clean.bat中的Sysinternals处理实用程序下载链接来a)停止Tomcat服务器和b)解锁.jar文件。handle -chandle -p在这里很有用。

ew!这项工作有些繁琐,但是它将为您可靠地自动执行该过程,因此您确实需要每次手动进行操作!


好的,这是unlock_handles.bat的粗略概念验证版本,供您试用:

REM "Use handle.exe to figure out the process id and handle ids, parse the output, then close the handle (again using handle.exe)"

cd "C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target"
"c:/Program Files/Process Explorer/handle.exe" -p java.exe "C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target" > handles.txt

@echo "O====== Going to unlock all the below file handles! =======O"
FOR /F "tokens=1-26 delims=: " %a in (handles.txt) DO @echo %h
FOR /F "tokens=1-26 delims=: " %a in (handles.txt) DO handle -p %c -c %f -y

当然,在尝试之前,您必须更改Sysinternals的handle.exe的路径。


我如何获得pre_clean.bat

如果您写有关第二个项目的更多详细信息,这将

今天晚些时候,我将尝试为您提供一个粗略的版本,但是基本上,我们必须编写它。它不存在!(此外,unlock_files.bat是一个更好的名称;预清理是使用它的上下文)。
vijucat

1
我用一个可以运行的unlock_handles.bat更新了答案。请让我知道这对你有没有用!编辑:解析DOS批处理文件中的字符串是如此...被黑在一起:-)
vijucat

我不明白我需要做什么

4

我有同样的问题,这个

mvn clean install -U

命令修复了错误。


1
-U做什么?
jDub9

@ jDub9 -U强制检查远程存储库上的更新的发行版和快照
Amir,


3

对于linux用户:可能的解决方案。

如果有机会仅向用户而非普通用户提供删除访问权限,则会发生由于“无法删除<任何文件或文件夹>”而导致的构建错误。

修复:键入ll命令以列出无法删除的文件,如果该文件具有root访问权限,请通过以下方式将其更改为普通用户:

sudo chown -R用户名:用户名文件名

稍后尝试清理并构建Maven。


谢谢,您救了我的命。引起我的目标文件夹的权限,所以我不能明确通过MVN
HUYNHTú

1

我有类似的问题。之前,我使用Maven 3构建项目。切换到maven 2后,出现上述错误。

通过切换到Maven 3解决了它。


1

Maven抱怨目标文件夹没有管理员权限。检查是否具有删除该文件夹的管理员权限。

在此处输入图片说明


1

我通过以下方法解决了我的问题:

  • MVN清洁
  • mvn安装
  • mvn全新安装

由于某些原因,它对我有用。祝好运 !!


谢谢。使用单独的命令运行可以解决此问题。我相信这是因为先前模块的安装阶段锁定了将来的Maven构建模块,然后在运行安装之前对其进行了干净的第一步。
Jared

0

如果锁定org.ow2.util.asm-asm-tree-3.1.jar并启动eclipse,日志记录将显示谁无法锁定文件。无法锁定文件的同一代码行不会释放锁定。


0

在预清理阶段,我使用Maven Unlocker程序执行。该程序为任何程序解锁所有文件和目录。

我使用maven-antrun-plugin执行此操作,并且仅在Windows系统中执行

<profile>
  <activation>
    <os>
      <family>windows</family>
    </os>
  </activation>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.8</version>
        <executions>
          <execution>
            <phase>pre-clean</phase>
            <configuration>
              <tasks>
                <exec dir="${project.build.directory}" executable="cmd" failonerror="false">
                  <arg value="Unlocker.exe" />
                  <arg value="/S" />
                </exec>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>

1
你能补充说明吗?
罗伯特

我相信他正在尝试运行Unlocker Windows程序-filehippo.com/download_unlocker/tech。这将删除当前执行目录上的所有依赖项。这不是一种可靠或安全的方法。
Ashok Goli

maven-antrun-pluign在预清理的maven阶段自动执行解锁程序。
劳尔·比亚尔巴

是的,我执行解锁程序。Windows锁定了更多文件,因为他是Windows。Unlocker是解决此问题的好工具
Raul Villalba


0

如果您在Eclipse或IntelliJ之类的IDE中遇到此错误,则可能有一个或多个调试窗口打开并在断点处暂停。终止它们。


0

出现此错误的原因是,某个进程正在使用maven试图删除的文件。这样的过程的一个例子是Eclipse或任何其他IDE正在同一项目上进行验证。

请确保没有从Eclipse或任何其他打开项目的IDE中运行验证。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.