Lambda Core - RuntimeError в Judge. Каква е причината?
Здравейте, можете ли да споделите каква би могла да е причината за тази грешка в Judge системата:
Exception in thread "main" java.lang.SecurityException: Not allowed: java.io.FilePermission at _$SandboxSecurityManager.checkPermission(_$SandboxExecutor.java:102) at java.lang.SecurityManager.checkRead(SecurityManager.java:888) at java.io.File.list(File.java:1117) at java.io.File.listFiles(File.java:1207) at solution.core.CoreCreator.createCore(CoreCreator.java:30) at solution.core.Engine.createCore(Engine.java:70) at solution.core.Engine.run(Engine.java:41) at solution.Main.main(Main.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at _$SandboxExecutor.main(_$SandboxExecutor.java:38)
При мен събмитнатия код работи и дава верни резултати.
а как се решава проблема?
a какво точно опитваш?
събмитвам си решението за изпитната задача Lamda Core, което при мен работи, но в Judge системата ми дава въпросната грешка. Колегата Косьо спомена вероятната причина за проблема, но не знам как да го накарам да проработи.
Привет колега
Значи тъй като неможеш да ползваш рефлекшън в пълната му фунционалност в джъдж решението е:
-или при стартиране на програмата първо да заредиш в едно репозитори класовете от които имаш нужда / виж имплементацията от подготовката за изпита на рояла/
Имай предвид че ако ти е необходим сингълтън тоест единична инстанция на класа например Repository or Strategy зареждаш и пазиш инстанция на класа.
Ако обаче ти трябват класове който се инстанцерат с различни пропъртита например somtingCommand(String name, Integer age) то тогава зареждаш и пазиш само класовете и респективно всеки път правиш нова инстанция
ex:
Constructor ctor = somtingCommand.getConstructor(String.class, Integer.class);
Class<?> newClass = (somtingCommand) ctor.newInstance("Pesho", 22);
-или с Class.forName(path + className) с което джъджа е ок
Надявам се да ти е от помощ
ако не рънва нещо пиши
Поздрави Косьо
Мерси Косьо, ще гледам видето да видя роял какви ги е свършил
Привет отново
Видеото е много дълго и ........ по-добре дръпни кода и го виж.
Ето ти и моето решение на LambdaCore - "https://github.com/kosio197/LambdaCore"
пс
след консултация с професионалец тря да уточня относно "неможеш да ползваш рефлекшън в пълната му фунционалност в джъдж"
не е точно така - за такъв проблем се ползва ClassLoader .
От друга страна в практиката е неизползваемо тъй като неможе да се разчита да се да се събират джавешки файлове по подаден път
в смисъл такива фаилове може изобщо да няма - кода може да е компилиран итн. итн
С други думи проблема не е самия рефлекшън а в начина за събиране на класовете.
Много ти благодаря, ще ги прегледам!