首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java:如何复制当前正在执行的文件

java:如何复制当前正在执行的文件
EN

Stack Overflow用户
提问于 2011-07-09 04:22:04
回答 2查看 1.5K关注 0票数 1

我有一个罐子。我希望jar能够在运行时复制它自己。我知道windows在这方面可能会有问题。我该怎么做呢,还是我想太多了?

编辑:为了解释更多……

我正在写一个可重新打包的固件部署系统...http://code.google.com/p/heimdall-one-click/的想法是,来自XDA的只读存储器开发人员可以制作自己的产品,然后将其打包在跨平台可部署的一键打包中,几乎与部署固件一样简单。

我的程序通过自动化任务完成了大量的工作。我正在尝试自动打包一键部署的打包系统……给开发人员一个要填写的表单,该表单将更改标题信息,然后他们选择要部署的固件文件。我试着把所有的东西都放在一个罐子里。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-09 04:35:17

我相信你可以使用:

代码语言:javascript
复制
File file = new  File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

以获取指向.JAR文件的路径的引用。

然后你只需复制一份:

http://download.oracle.com/javase/tutorial/essential/io/copy.html

您的操作系统可能不允许这样做,但我认为它应该这样做。

票数 0
EN

Stack Overflow用户

发布于 2011-07-09 04:26:53

正如josh所说,如果你告诉我你为什么想要这样做是为了帮助你,那就太好了。

只回答你发布的内容,复制jar就是复制另一个文件。还有一个问题是,它可能会被操作系统(Windows)阻止;另一个问题是如何在计算机中定位它,以及运行该进程的用户是否具有所需的权限。

一旦这两个问题得到解决,这只是一个复制操作,操作系统不会关心复制的命令是来自于从文件运行的进程还是来自另一个进程。

编辑以在第一篇帖子中输入更改。

正如我之前所说的,复制文件最终是一个操作系统问题。如果您想在Windows中复制当前的jar,则jar不能被其他进程锁定,因此它成为操作系统问题而不是Java问题。

可能的解决方法:

  • 最快(但也是最脏)的方法是启动一个休眠几秒的.bat,然后进行复制。启动后,立即关闭java应用程序。如果你需要继续在Java中做事情,在复制文件之后,.bat会再次启动java应用程序(使用适当的参数)。
  • 之前的一个变种稍微低级一点……从.bat启动java应用程序,.bat所做的第一件事就是将您的jar复制到PC临时目录中。一定要记录好它,这样你的用户才不会害怕!
  • JNI库来解锁文件。有几个程序(解锁程序)试图解锁文件;不知道它在哪一点是有效的,或者它将如何影响JVM。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6630062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档