我希望能够像在python和php中一样执行java一行程序。
类似于:
java "System.out.println("hello world");"
从linux中的终端或windows 中的cmd
编辑:Java是一种编译过的语言。明白了。我可以即时编译和执行吗?对临时文件说,然后执行它?不使用jshell
从Java11开始,您也可以直接使用源文件运行java
,例如java MyClass.java
所以,理论上,你可以做这样的事情(在bash中(:
echo 'public class TmpClass{ public static void main(String[] args){System.out.println("Hello World");}}' > /tmp/TmpClass.java && java /tmp/TmpClass.java
在任何方面都不优雅,可能也没有多大用处,但我想这是可以做到的。
为了使它在命令行上不那么冗长,您可以创建一个简单的bash脚本runjava.sh
并将其调用为
$ runjava.sh 'System.out.println("Hello World");'
Hello World
runjava.sh:
#!/bin/bash
# inject given line inside the main method of a temp class
read -d '' tmpclass <<EOF
public class TmpClass{
public static void main(String[] args) throws Exception {
$@
}
}
EOF
tmpfile=/tmp/TmpClass.java
# write generated source code to a temporary file
echo $tmpclass > $tmpfile
# execute the source file directly (requires Java11+)
java $tmpfile
# delete the temporary file
rm $tmpfile
jshell可能更适合,但由于您特别要求非jshell解决方案。。