로보크드를 사용할 때 MS 윈도우 버전 1.4_2 에서 데이터의 저장과 데이터의 로딩을 할 때, execetion 을 내는 경우가 있다고 한다. 나도 한 번 실험 해봤다.
가끔 오류를 일으긴다. 오류가 랜덤하게 일어나는 것 같기도 하다.
sitting duck 이라는 샘플 코드에서 저장하는 코드가 삽입되어 있다. 그 걸로 실험 해봤다. 오류가 나는 경우 아래와 같은 오류가 난다.
우선 오류의 조건은 처음 파일을 생성하는 게임에서 생긴다. 파일이 이미 생성되어 있을 때는 생기지 않는 것 같다. 그리고, 로보코드를 실행하고 나서 stting duck 의 첫 판에서 문제가 생긴다.
결론적으로 파일을 처음 만드는 판에서 문제가 생긴다.
라운드도 랜덤한것 같다. 다만, 파일을 만드는 라운드에서는 생기지 않는 것 같다.
어째든 저장을 조심하고 static 변수를 이용하는게 좋아보인다. 로보코드에서만 발생하는지는 아직 모르겠다.
=========================
Round 1 of 5
=========================
I have been a sitting duck for 6 rounds, in 2 battles.
SYSTEM: sample.SittingDuck has died
=========================
Round 2 of 5
=========================
I have been a sitting duck for 7 rounds, in 2 battles.
SYSTEM: sample.SittingDuck has died
=========================
Round 3 of 5
=========================
sample.SittingDuck: Exception: java.security.AccessControlException: Preventing sample.SittingDuck from access: (java.io.FilePermission C:
obocode
obotssample read): You may only read files in your own root package directory.
java.security.AccessControlException: Preventing sample.SittingDuck from access: (java.io.FilePermission C:
obocode
obotssample read): You may only read files in your own root package directory.
at robocode.security.RobocodeSecurityManager.checkPermission(RobocodeSecurityManager.java:314)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.File.exists(Unknown Source)
at java.io.Win32FileSystem.canonicalize(Unknown Source)
at java.io.File.getCanonicalPath(Unknown Source)
at java.io.File.getCanonicalFile(Unknown Source)
at robocode.peer.robot.RobotFileSystemManager.getReadableDirectory(RobotFileSystemManager.java:110)
at robocode.security.RobocodeSecurityManager.checkPermission(RobocodeSecurityManager.java:299)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.FileInputStream.
(Unknown Source)
at java.io.FileReader.(Unknown Source)
at sample.SittingDuck.run(SittingDuck.java:25)
at robocode.peer.RobotPeer.run(RobotPeer.java:616)
at java.lang.Thread.run(Unknown Source)
=========================
Round 4 of 5
=========================
I have been a sitting duck for 8 rounds, in 2 battles.
SYSTEM: sample.SittingDuck has died
=========================
Round 5 of 5
=========================
I have been a sitting duck for 9 rounds, in 2 battles.
SYSTEM: sample.SittingDuck has died