Loading...
Ivan_Pashkulev avatar Ivan_Pashkulev 20 Точки

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)

При мен събмитнатия код работи и дава верни резултати. 

Тагове:
0
Java Advanced
kosio197 avatar kosio197 104 Точки

Привет,

Това, означава, че се опитваш да направиш listFiles, на някоя директория за която нямаш права в judje. Локално имаш права да я листваш и си минава.

И аз имах точно такъв случай: Парсвах си за анотации подобно на имплементацията в BashSoft - подавам си път и парсвам файловете там и нацелих този проблем, като се опитах да кача в judje.

Поздрави, Косьо

 

0
Ivan_Pashkulev avatar Ivan_Pashkulev 20 Точки

а как се решава проблема?

0
kaloyannikov avatar kaloyannikov 531 Точки

a какво точно опитваш?

0
Ivan_Pashkulev avatar Ivan_Pashkulev 20 Точки

събмитвам си решението за изпитната задача Lamda Core, което при мен работи, но в Judge системата ми дава въпросната грешка. Колегата Косьо спомена вероятната причина за проблема, но не знам как да го накарам да проработи.

0
kosio197 avatar kosio197 104 Точки

Привет колега

java.lang.SecurityException: Not allowed: java.io.FilePermission - конкретно този проблем не мисля че можем да го решим.

Значи тъй като неможеш да ползваш рефлекшън в пълната му фунционалност в джъдж решението е:

-или при стартиране на програмата първо да заредиш в едно репозитори класовете от които имаш нужда / виж имплементацията от подготовката за изпита на рояла/

Имай предвид че ако ти е необходим сингълтън  тоест единична инстанция на класа например 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) с което джъджа е ок

Надявам се да ти е от помощ

ако не рънва нещо пиши

 

Поздрави Косьо

 

 

0
Ivan_Pashkulev avatar Ivan_Pashkulev 20 Точки

Мерси Косьо, ще гледам видето да видя роял какви ги е свършил

0
kosio197 avatar kosio197 104 Точки

Привет отново

Видеото е много дълго и ........ по-добре дръпни кода и го виж.

Ето ти и моето решение на LambdaCore - "https://github.com/kosio197/LambdaCore"

пс

след консултация с професионалец тря да уточня относно  "неможеш да ползваш рефлекшън в пълната му фунционалност в джъдж"

 не е точно така -  за такъв проблем се ползва ClassLoader .

От друга страна в практиката е неизползваемо тъй като неможе да се разчита да се да се събират джавешки файлове по подаден път

в смисъл такива фаилове може изобщо да няма - кода може да е компилиран итн. итн

С други думи проблема не е самия рефлекшън а в начина за събиране на класовете.

0
Ivan_Pashkulev avatar Ivan_Pashkulev 20 Точки

Много ти благодаря, ще ги прегледам!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.