使用 find 将多个 java 文件传递给 javac
Passing multiple java files to javac with find
我有这个:
javac -d "$PWD/target/classes" \
-cp "$CLASSPATH:$PWD/src/main/java" \
"$(find "$PWD/src/main/java/huru" -name '*.java')"
但我得到:
javac: file not found: /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/Foo.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseModel.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/InterfaceContainer.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/KCClassEntity.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseEntity.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/UserModel.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/query/QueryBuilder.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/TestVerticle.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/middleware/JWTHandler.java
所以我尝试使用 xargs 将其放在一行中:
javac -d "$PWD/target/classes" \
-cp "$CLASSPATH:$PWD/src/main/java:$m2" \
"$(find "$PWD/src/main/java/huru" -name '*.java' | xargs)"
但后来我得到:
javac: file not found: /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/Foo.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseModel.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/InterfaceContainer.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/KCClassEntity.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseEntity.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/middleware/ErrorHandler.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/util/Asyncc.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/routes/IBasicHandler.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/routes/RouteHelper.java
其中 xargs 将所有内容放在一行中。所有这些 java 文件都存在,路径正确,但很明显 find 的结果无效。有谁知道如何正确执行此操作?
因此,一种技术是使用临时文件(这很糟糕,但它有效):
find . -name '.java' > my.files
javac @my.files
是的,根据 javac 规范,@ 字符是必需的,因此 java 知道这是一个要读取的文件。
但我仍在寻找一种方法来直接找到 javac 的查找结果,而不必使用临时文件。
我有这个:
javac -d "$PWD/target/classes" \
-cp "$CLASSPATH:$PWD/src/main/java" \
"$(find "$PWD/src/main/java/huru" -name '*.java')"
但我得到:
javac: file not found: /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/Foo.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseModel.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/InterfaceContainer.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/KCClassEntity.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseEntity.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/UserModel.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/query/QueryBuilder.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/TestVerticle.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/middleware/JWTHandler.java
所以我尝试使用 xargs 将其放在一行中:
javac -d "$PWD/target/classes" \
-cp "$CLASSPATH:$PWD/src/main/java:$m2" \
"$(find "$PWD/src/main/java/huru" -name '*.java' | xargs)"
但后来我得到:
javac: file not found: /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/Foo.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseModel.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/InterfaceContainer.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/KCClassEntity.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseEntity.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/middleware/ErrorHandler.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/util/Asyncc.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/routes/IBasicHandler.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/routes/RouteHelper.java
其中 xargs 将所有内容放在一行中。所有这些 java 文件都存在,路径正确,但很明显 find 的结果无效。有谁知道如何正确执行此操作?
因此,一种技术是使用临时文件(这很糟糕,但它有效):
find . -name '.java' > my.files
javac @my.files
是的,根据 javac 规范,@ 字符是必需的,因此 java 知道这是一个要读取的文件。
但我仍在寻找一种方法来直接找到 javac 的查找结果,而不必使用临时文件。