Java 自动编译Bash脚本不工作
简单地说,我想通过命令行手动编译Java文件,但不想对每个目录进行编译。我试着写这个脚本,但似乎不起作用Java 自动编译Bash脚本不工作,java,bash,shell,scripting,terminal,Java,Bash,Shell,Scripting,Terminal,简单地说,我想通过命令行手动编译Java文件,但不想对每个目录进行编译。我试着写这个脚本,但似乎不起作用 CUR=$PWD # save workspace directory to return for line in `find -type d -name src` # find and loop through src paths do eval cd $line # go to s
CUR=$PWD # save workspace directory to return
for line in `find -type d -name src` # find and loop through src paths
do
eval cd $line # go to src
eval javac *.java
eval jar *.class # I need to have a jar for my project
eval mv ../bin/
cd $CUR
done
我认为您根本不需要在该脚本中使用
eval
但有一个问题可能是,您的源目录并不都称为src
(或者它们是吗?)您的目录结构是什么样的
此外,您可能需要为您的项目使用一个jar,而不是多个jar,因此该位也不起作用
您可能应该考虑使用真正的Java构建工具,如Ant或Maven;他们在十多年前就解决了这个问题。对现有脚本的一些改进:
for line in $(find -type d -name src) # find and loop through src paths
do
(
cd $line # go to src
javac *.java
jar *.class # I need to have a jar for my project
mv ../bin/
)
done
使用括号执行子shell中的内部部分,避免出现cd
问题。我也看不出有什么理由eval
您确定所有java文件都直接位于名为src
的文件夹中,没有任何包结构吗?您确定他们不需要进一步的类路径信息来编译吗
到底是什么问题,让你觉得它不起作用
为什么不使用grade、maven或ant来构建项目,有什么好的理由吗
(请随意更新问题作为对问题的回答。)此外,jar命令需要参数,如cf或cvf,除非所有源文件都在默认包中,否则通配符将不起作用。。