Esiste un modo per disattivare completamente il gestore della sicurezza Java?
Come disabilitare il gestore della sicurezza Java?
Sto sperimentando con il codice sorgente di db4o. Usa la riflessione per mantenere gli oggetti e sembra che il responsabile della sicurezza non permetta la riflessione per leggere e scrivere campi privati o protetti.
Il mio codice:
public static void main(String[] args) throws IOException {
System.out.println("start");
new File(DB_FILE_NAME).delete();
ObjectContainer container = Db4o.openFile(DB_FILE_NAME);
String ob = new String("test");
container.store(ob);
ObjectSet result = container.queryByExample(String.class);
System.out.println("retrieved (" + result.size() + "):");
while(result.hasNext()) {
System.out.println(result.next());
}
container.close();
System.out.println("finish");
}
uscita:
start [db4o 7.4.68.12069 2009-04-18 00:21:30] AccessibleObject#setAccessible() is not available. Private fields can not be stored. retrieved (0): finish
This thread suggerisce la modifica di file java.policy per consentire riflessione, ma non sembra funzionare per me. JVM
Sto iniziando con argomenti
-Djava.security.manager -Djava.security.policy==/home/pablo/.java.policy
file dei criteri in modo specificato sarà l'unico file dei criteri utilizzati
Il file è simile al seguente:
grant { permission java.security.AllPermission; permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; };
ho trascorso gli ultimi 3 ore su questo e non hai idee su come fare questo lavoro. Qualsiasi aiuto apprezzato.
Hai provato a chiamare setAccessible o altre azioni privilegiate dal tuo codice? –
Anche la riga di comando completa può essere utile. –
I tuoi argomenti VM sono corretti? Sembra che tu abbia -Djava.security.policy ==? –