2017-01-16 57 views
-1

我想知道是否可以將代碼作爲參數傳遞給Java CLI,並讓它在內存中編譯和運行代碼,而不必將其寫入文件,編譯文件,運行編譯的文件,然後刪除所有內容。如果沒有,是否有辦法在UNIX環境(Linux/macOS)中模擬此行爲?將參數提供給CLI的運行Java代碼

例子:

> 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存儲庫中獲取依賴關係jar。 – 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 

它以參數C作爲代碼,保存到臨時文件和編譯。如果稍後添加rm Main.java,則可以刪除它。

相關問題