我有以下方法,它意味着将信息附加到文件,但我得到以下错误。在方法中,我使用了继承自java.io.InputStream
的robocode API部分文件和文件夹的所有权限似乎都很好,文件确实存在
static public void logInfo(String info)
{
RobocodeFileWriter in;
try {
in = new RobocodeFileWriter("log.txt");
in.append(info);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
SYSTEM:itc.solomon初始化期间发生错误 SYSTEM:java.security.AccessControlException:阻止itc.solomon访问:(java.io.FilePermission log.txt read):您只能读取自己的根包目录中的文件。 java.security.AccessControlException:阻止itc.solomon访问:(java.io.FilePermission log.txt read):您只能读取自己的根包目录中的文件。 在robocode.security.RobocodeSecurityManager.handleSecurityProblem(未知来源) 在robocode.security.RobocodeSecurityManager.checkPermission(未知来源) 在java.lang.SecurityManager.checkRead(SecurityManager.java:888) 在java.io.File.exists(File.java:748) 在robocode.RobocodeFileOutputStream。(未知来源) 在robocode.RobocodeFileOutputStream。(未知来源) 在robocode.RobocodeFileWriter。(未知来源) at itc.CFile.logInfo(CFile.java:16) at itc.solomon。(solomon.java:43) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:532) 在java.lang.Class.newInstance0(Class.java:372) 在java.lang.Class.newInstance(Class.java:325) 在robocode.peer.proxies.HostingRobotProxy.loadRobotRound(未知来源) 在robocode.peer.proxies.HostingRobotProxy.run(未知来源) 在java.lang.Thread.run(Thread.java:636)
答案 0 :(得分:2)
我认为getDataFile("log.txt")
会为您提供合适的位置。
答案 1 :(得分:1)
我对这个问题进行了一些搜索。看来there's a bug in the robocode
package, awkwardly solved by:
while (!dataIsLoaded) {
try {
tryToReadData;
dataIsLoaded = true;
} catch (AnyException e) {}
}
这是解决问题的一种非常糟糕的方式,原因有很多(忽略异常,忙碌等待等)。更合理的方法是将robocode软件包降级为以前更稳定的版本。