ปัญหาเกี่ยวกับคำสั่ง git Blaze โดยใช้โปรแกรม Java

ฉันกำลังพยายามเรียกใช้คำสั่ง git ด้านล่างโดยใช้โปรแกรมจาวาบน windows

 git --git-dir D:\code_coverage\.git blame  'src/RunCodeCoverage.java'
 | grep e4ecfbe | awk '{print $7}'

มันทำให้ฉันมีข้อผิดพลาด:

fatal: cannot stat path '$7}'': No such file or directory

ขณะรันคำสั่งนี้จาก command prompt มันจะให้ผลลัพธ์ตามที่ต้องการ

กรุณาช่วย!


person Manish Mankar    schedule 03.07.2015    source แหล่งที่มา


คำตอบ (1)


บน CMD ใน Windows ฉันสามารถทำให้มันทำงานโดยใช้เครื่องหมายคำพูดคู่สำหรับพารามิเตอร์ awk:

 git --git-dir D:\code_coverage\.git blame  'src/RunCodeCoverage.java'
 | grep e4ecfbe | awk "{print $7}"

โปรดทราบว่า awk.exe ของฉันมาจาก Gnu บน Windows

OP กล่าวถึงการใช้คำสั่งนั้นใน Java ด้วย:

String commandToBeExecuted="git --git-dir D:\code_coverage\.git blame 'src/RunCodeCoverage.java' | grep e4ecfbe | awk "{print $7}"'"; 
Process p = Runtime.getRuntime().exec(commandToBeExecuted);

แต่คุณไม่เคยส่งพารามิเตอร์ทั้งหมดเป็นสตริงเดียว
ใช้อาร์เรย์ เช่นเดียวกับใน "การใช้เครื่องหมายคำพูดภายใน getRuntime().exec" และใน "วิธีทำให้ไพพ์ทำงานกับ Runtime.exec() ได้อย่างไร"

Process p = Runtime.getRuntime().exec(new String[]{"cmd", "/c", commandToBeExecuted);

หลีกเลี่ยงเครื่องหมายคำพูดคู่ใน commandToBeExecuted:

 commandToBeExecuted = "git --git-dir D:\code_coverage\.git blame  'src/RunCodeCoverage.java'
 | grep e4ecfbe | awk \"{print $7}\""
person VonC    schedule 03.07.2015
comment
ขอบคุณ VonC มันทำงานผ่าน CMD แต่ในขณะที่รันจากโปรแกรม java โดยใช้ java Runtime มันทำให้เกิดข้อผิดพลาดดังกล่าว: fatal: can not stat path '$7}'': No such file or directory. - person Manish Mankar; 03.07.2015
comment
@ManishMankar คุณใช้โค้ด Java ใดที่แน่นอนในการส่งพารามิเตอร์ไปยังคำสั่ง java Runtime.exec() - person VonC; 03.07.2015
comment
สตริง commandToBeExecuted=git --git-dir D:\code_coverage\.git ตำหนิ 'src/RunCodeCoverage.java' | grep e4ecfbe | awk {พิมพ์ $7}'; กระบวนการ p = Runtime.getRuntime().exec(commandToBeExecuted); - person Manish Mankar; 03.07.2015
comment
@ManishMankar ฉันได้แก้ไขคำตอบตามนั้น - person VonC; 03.07.2015
comment
ขอบคุณ@VonC! แต่ยังคงประสบปัญหาร้ายแรง: ไม่สามารถระบุเส้นทาง ''src/RunCodeCoverage.java'' ได้: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว - person Manish Mankar; 03.07.2015
comment
@ManishMankar เพิ่มไดเรกทอรีพาเรนต์ที่ถูกต้องเป็นพารามิเตอร์ที่สามของ exec()(docs.oracle.com/javase/6/docs/api/java/lang/ ): stackoverflow.com/a/6811578/6309 - person VonC; 03.07.2015