我尝试使用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。
请帮助我完成这项工作,我一直在寻找解决方案。 :(
编辑:这是一个愚蠢的问题。 我刚刚意识到我在错误的地方传递了争论。我想到了。三江源!
答案 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"实用程序。)