从bash脚本编译和执行java

时间:2016-10-24 04:30:45

标签: java bash

我尝试使用bash脚本编译我的java代码。我也需要传递参数,我从同一目录中的另一个文件中获取。我的脚本看起来像:

#!/usr/bin/env bash

MYID="$(cat $(pwd)/my.id)"
eval javac src/main/java/foo/bar.java "$MYID"

但它认为我的论点是另一个用于编译的java文件,并给出了错误:

Class names, 'abc123', are only accepted if annotation processing is explicitly requested

P.S。 abc123是我需要传递的my.id文件中唯一的id。

请帮助我完成这项工作,我一直在寻找解决方案。 :(

编辑:这是一个愚蠢的问题。 我刚刚意识到我在错误的地方传递了争论。我想到了。三江源!

1 个答案:

答案 0 :(得分:0)

你这是错误的方式。 javac命令编译程序。这就对了。它不会生成源代码。

根据你的评论,听起来你应该这样做:

javac foo/Bar.java
java foo.Bar $(cat my.id) > foo/Baz.java
javac foo/Baz.java

这假设foo.Bar是某种知道如何生成java源代码的生成器程序。

实际上,我希望你真正想做的是某种源代码模板扩展。有更简单和/或更灵活的方法来编写一个定制的Java程序来完成它。 (例如,使用" m4"实用程序。)