2010-02-21 6 views
2

J'ai la méthode ci-dessous qui est destinée à ajouter des informations à un fichier mais j'obtiens l'erreur ci-dessous. Dans la méthode que j'utilise des parties de l'API robocode qui hérite de java.io.InputStreamEntrée et sortie de fichier Java

Toutes les autorisations sur les fichiers et les dossiers semblent bien et le fichier existe

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: Une erreur est survenue lors de l'initialisation de itc.solomon SYSTÈME: java.security.AccessControlException: Empêcher itc.solomon d'accéder à: (java.io.FilePermission log.txt read): Vous pouvez uniquement lire les fichiers dans votre propre répertoire racine. java.security.AccessControlException: Empêcher itc.solomon d'accéder à: (java.io.FilePermission log.txt read): Vous ne pouvez lire que les fichiers dans votre propre répertoire racine. à robocode.security.RobocodeSecurityManager.handleSecurityProblem (Source inconnue) à robocode.security.RobocodeSecurityManager.checkPermission (Source inconnue) à java.lang.SecurityManager.checkRead (SecurityManager.java:888) à java.io.File. existe (File.java:748) à robocode.RobocodeFileOutputStream (Source inconnue) à robocode.RobocodeFileOutputStream (Source inconnue) à robocode.RobocodeFileWriter (Source inconnue) à itc.CFile.logInfo (CFile.java...: 16) at itc.solomon (solomon.java:43) à sun.reflect.NativeConstructorAccessorImpl.newInstance0 (méthode native) à sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl. java: 57) à sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) à java.lang.reflect.Constructor.newInstance (Constructor.java:532) à java.lang.Class.newInstance0 (classe. java: 372) à java.lang.Class.newInstance (Class.java:325) à robocode.peer.proxies.HostingRobotProxy.loadRobotRound (source inconnue) à robocode.peer.proxies.HostingRobotProxy.run (source inconnue) at java.lang.Thread.run (Thread.java:636)

Répondre

1

J'ai cherché un peu à propos de ce problème. Il semble que there's a bug in the robocode package, awkwardly solved by:

while (!dataIsLoaded) { 
    try { 
     tryToReadData; 
     dataIsLoaded = true; 
    } catch (AnyException e) {} 
} 

Il est un moyen assez terrible pour résoudre les problèmes, pour de nombreuses raisons (abstraction faite des exceptions, attente active, etc.) Une façon plus saine d'esprit serait Déclassement le paquet robocode à un précédent, version plus stable.

See search results here.

+0

Je pense que le problème ci-dessus n'est pas la même chose que sur le wiki. De toute façon, wiki parle de la version 1.4.2. Robocode est actuellement 1.7.2. Les gens ont appris à signaler correctement les bugs depuis. https://sourceforge.net/tracker/?group_id=37202&atid=419486 –