Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动编译Bash脚本不工作_Java_Bash_Shell_Scripting_Terminal - Fatal编程技术网

Java 自动编译Bash脚本不工作

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

简单地说,我想通过命令行手动编译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 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,除非所有源文件都在默认包中,否则通配符将不起作用。。