What is the cause for the failure: “jarsigner: attempt to rename {file} to {file}.org failed” when signing jars with ant?

寵の児 提交于 2019-12-10 04:35:43

问题


I am getting the error:

[signjar] jarsigner: attempt to rename C:\workspace\line_editor\lib\icon.jar to C:\workspace\line_editor\lib\icon.jar.orig failed

when attempting to self sign a set of jars with ant inside Eclipse. The ant build has worked fine in this project and similar code in other projects. I made some small changes to code and tried to rebuild and keep getting this error.

Here is the related ant target:

<target name="sign" depends="jar" description="Signs Jars">

        <genkey keystore="myKeystore1" alias="something" storepass="somethingpass" 
          dname="CN=Classification, OU=NAPA, O=GPC, C=US"/> 


        <signjar keystore="myKeystore1" alias="something" storepass="somethingpass">
            <fileset file="${web.dir}/${jar.name}" />
            <fileset dir="${lib.dir}">
                <include name="*.jar"/>
            </fileset>  
        </signjar>
    </target>

I deleted the project and pulled it down again from our repository. So it has the same default project settings as other projects that this part does not fail. I looked at the .jar in question and it was not read-only. I changed the name and the next alphabetical .jar file also failed. There is no program running that is accessing the .jars in this folder.

Any suggestions as to cause?


回答1:


One possibility is that the jar - which is in a 'lib' directory - is on a classpath in use during your build. Is ${lib.dir} included on a classpath used in the buildfile?

You could create a separate directory to deposit signed jars to, and specify that to the 'signjar' task using the destdir attribute.




回答2:


I had the same problem. Try renaming the jar file yourself. If it can't be renamed, you can usually figure out which application has a file lock on it. Most likely some instance of java. Quit all java-based apps and try again. (Use task manager to make sure your java/javaw are not running.) After that, it should work.




回答3:


It looks for jarsigner.exe in the home directory of the JRE chosen for the project. If the JRE is just a JRE (not a JDK) this program will not be present.

Try setting a project-specific JRE and make sure it is actually a JDK.



来源:https://stackoverflow.com/questions/4714290/what-is-the-cause-for-the-failure-jarsigner-attempt-to-rename-file-to-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!