import java.io.*;
import java.nio.*;
public class Test1234{
public static void main(String args[]){
File inputF = new File(Test1234.class.getProtectionDomain().getCodeSource().getLocation().getFile());
File outputF = new File("D:\\test.class");
FilePermission adb = new FilePermission(inputF.getPath(),"write,read,execute");
Files.copy(inputF.toPath(),outputF.toPath(),REPLACE_EXISTING);
}
}
for simplicity the inputF points to the class file itself. And it compiles perfect. but when i found the file test.class it only is an empty folder.
所以请各位帮助我!!!我遇到了这个问题。
答案 0 :(得分:1)
拒绝权限的最可能原因是您无法以当前用户身份写入C:\
。选择您可以写入或以管理员身份运行的文件夹。
由于您运行的是普通main
方法,因此很可能没有SecurityManager
,如果这是问题,您将获得SecurityException
。此外,您是否读取当前代码源并不重要,只有在Windows上您无法删除或写入,因为这将被锁定通过操作系统。
如果这不是问题,则需要验证Test1234.class.getProtectionDomain().getCodeSource().getLocation().getPath()
指向您实际要复制的内容。在这种情况下,堆栈跟踪会有所帮助。
答案 1 :(得分:0)
我刚刚通过将我的类文件构建到jar文件找到了解决方案。然后当我运行它时,它创建了一个名为test.jar的克隆jar文件。当我只说这个时,你必须将outputF路径更改为“d:\ test.jar”。 :)