使用单一命令行编译和构建Java(Linux)

时间:2014-09-13 17:39:58

标签: java linux command-line alias

有没有办法以这样的方式设置别名,以便我可以输入命令,然后在一行中输入参数?

例如,而不是

javac Program.java && java Program

我可以去

newcommand Program.java //or "newcommand Program", whichever is easier

将执行与上面一行相同的命令。

7 个答案:

答案 0 :(得分:10)

alias不接受参数,定义如下函数:

jcar() { javac $1.java && java $1 ; }

然后使用它:

jcar Program

jcar旨在作为java-compile-and-run的首字母缩写)

答案 1 :(得分:5)

从Java 11开始,您可以使用单个命令

java example.java

https://openjdk.java.net/jeps/330

链接:How to compile and run in single command in java

答案 2 :(得分:4)

添加到enrico.bacis'回答,我个人不想让Program.class文件混乱我的工作区,如果我只是测试一个程序,那我就

jcar() { javac $1.java && java $1 && rm $1.class}

此外,我发现陷阱ctrl-c很有帮助,即使我中途结束该计划,它仍会删除.class

jcar() {
trap "rm $1.class" SIGINT SIGTERM
javac $1.java
java $1
rm $1.class
}

答案 3 :(得分:2)

我喜欢传递完整的Program.java文件名作为输入参数,允许轻松自动完成。

以下是notcompletelyrational脚本的编辑版本,该脚本需要jcar Program.java而不是jcar Program等命令:

jcar() {
  f=$1
  f2=${f%.*}
  trap "rm $f2.class" SIGINT SIGTERM
  javac $1
  java $f2
  rm $f2.class
}

答案 4 :(得分:1)

我打算给你一块Makefile,但它不够通用。无论何时你想编译一个更复杂的程序(假设有2个文件),你也需要编译第二个程序。它可能在一个包中,在这种情况下你所要求的东西不再起作用。如果你必须处理库,也一样。

出于所有这些原因,我强烈建议您选择您选择的建筑工具,makesconsant,然后让我们提及它maven。我找到了后来为小项目复杂的方法。但是ant是我最好的java程序候选者。最后,您只需ant run即可运行您的程序并在需要时重新编译它。使用ant查看hello world tutorial

答案 5 :(得分:0)

添加到enrico.bacis'和notcompleterationrational的答案,如何在包下运行它并清理包编译文件:

jcar() { javac -d . $1.java && java ${PWD##*/}.$1 && rm -rf ${PWD##*/}/ }

顺便说一句,这个函数应该分别添加到Mac OS的〜/ .bash_profile和Linux的〜/ .bashrc。

运行它:

jcar ProgramName

答案 6 :(得分:0)

我最喜欢的解决方案如下:

function jcar { javac ${1%.*}.java && java ${1%.*}; }

它可以处理各种输入,例如

jcar myfile
jcar myfile.
jcar myfile.java
jcar myfile.class

它可以让您更快地使用Tab:)