Принятие кода Java в качестве пользовательского ввода

Мне интересно, есть ли в java способ принять java-код в качестве пользовательского ввода, а затем запустить его. Например, пользователь может ввести:System.out.println(someMethod.toString());и он распечатает вывод из someMethod.


person Starwarswii    schedule 29.01.2014    source источник
comment
Я не думаю, что возможно bcoz java компилируется компилятором java и запускается JRE   -  person Kick    schedule 29.01.2014
comment
stackoverflow.com/ вопросы/4389232/   -  person jonhopkins    schedule 29.01.2014


Ответы (3)


Компиляция случайного кода, написанного пользователем, может быть очень опасной. Но вы можете попробовать использовать Java Compiler API, или если вы хотите что-то похожее, но не строго java, используйте groovy (проще смотреть, что вы хотите, с объектом GroovyShell)

Я не пытался сделать что-то подобное сам, но нашел несколько полезных ответов здесь: Преобразовать строку в код

Будьте очень осторожны, если вам это удастся.

person j2e    schedule 29.01.2014
comment
Netbeans компилирует код, написанный пользователем. Он довольно популярен и не так опасен. - person Rainbolt; 29.01.2014

Я действительно не знаю, можете ли вы преобразовать пользовательский ввод в исполняемый код, но вы можете заставить программу принимать слова, связанные с методами.

if(input == someMethod)
{
   someMethod();
}
person deed    schedule 29.01.2014

Взгляните на beanshell, который может интерпретировать строку Java и запускать команды.

Но будьте очень осторожны. Предоставление доступа к этому открывает ОГРОМНУЮ дыру в безопасности!

person lance-java    schedule 29.01.2014