Я новичок в работе с ejudge.
Возникла проблема - чтение/запись из файлов при использовании Java.
В serve.cfg строчку добавил
start_env = "EJUDGE_JAVA_POLICY=fileio.policy"
Code: Select all
[tester]
name = Linux-java
arch = "java"
abstract
no_core_dump
kill_signal = TERM
memory_limit_type = "java"
secure_exec_type = "java"
start_cmd = "runjava"
start_env = "LANG=C"
start_env = "EJUDGE_PREFIX_DIR"
start_env = "EJUDGE_JAVA_POLICY=fileio.policy"
check_dir = "/home/contest/ejudge/testing_dir"
Версия Java 1.6.0_23
ОС Ubuntu 11 x64
ejudge сконфигурирован без использования виртуального диска.
Ядро не патчил.
На C++ (проверил на всякий случай) таких проблем нет.
Параметр добавлял "ручками" редактируя файл (т.к. в веб интерфейсе этой возможности не нашел).
После этого пробовал:
1. Reload Config Files
2. Reset the Contest
Код решения выглядит так:
Code: Select all
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException{
StreamTokenizer in = new StreamTokenizer(new FileReader("input.txt"));
}
}
Code: Select all
Exception in thread "main" java.security.AccessControlException: access denied (java.io.FilePermission input.txt read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:393)
at java.security.AccessController.checkPermission(AccessController.java:553)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.io.FileInputStream.<init>(FileInputStream.java:130)
at java.io.FileInputStream.<init>(FileInputStream.java:96)
at java.io.FileReader.<init>(FileReader.java:58)
at Main.main(Main.java:10)