2017-01-16 16 views
-1

Мне было интересно, можно ли передать код в качестве аргумента в Java CLI и выполнить его компиляцию и запуск кода в памяти вместо того, чтобы записать его в файл, скомпилировать файл, запустите скомпилированный файл, а затем удалите все. Если нет, есть ли способ подражать этому поведению в среде UNIX (Linux/macOS)?Запустить код Java, предоставленный в аргументе CLI

Пример:

> java --code 'public class Main { public static void main(String[] args) { System.out.println("Hello, world."); } }'

+0

У вас может быть больше успеха с одним из языков сценариев на основе JVM (например, Groovy или Beanscript) – Thilo

+0

Вы можете написать код Java, который позволит вам приблизиться к такому поведению. У вас может быть Java-код, хранящийся только в памяти, но Java требует, чтобы файлы классов фактически записывались на диск. Поэтому вам все равно придется удалить их после того, как вы закончите с ними. –

+0

Также обратите внимание, что почти любая программа Java, которую вы собираетесь писать, захочет использовать несколько сторонних библиотек. Средство JVM-скриптинга обычно поддерживает выборку банок зависимости из хранилищ Maven. – Thilo

ответ

0

Вы можете сделать это нно Баш.

Basicaly это будет выглядеть следующим образом:

#!/bin/bash 

while getopts ":c" opt; do 
    case $opt in 
    c) 
     echo $2 > ./Main.java 
     javac Main.java 
     ;; 
    \?) 
     echo "Invalid option: -$OPTARG" >&2 
     ;; 
    esac 
done 

Он принимает аргумент с как код, сохраняет его во временный файл и компилирует. Вы можете удалить, если это необязательно, добавив rm Main.java позже.