【发布时间】:2021-03-11 16:29:41
【问题描述】:
我正在尝试查找 helloworld.java 文件的路径,以便将其传递给编译器函数。
我有什么:
我希望这会返回此目录中唯一 helloworld.java 文件的 []byte 类型的路径,然后将其字符串化,然后将其传递给 Java() 函数。
filePath, _ := exec.Command("find", "./helloworld/workspace", "-name", "*.java").Output()
Java(string(filePath))
问题是我的 java() 函数中的 cmd := exec.Command("javac", filePath) 无法识别文件路径,因此无法编译它。
但是,如果我像这样对从 exec.Command("find) 获得的路径进行硬编码:
这很好用
cmd := exec.Command("javac", "./helloworld/workspace/src/main/java/com/coveros/demo/helloworld/HelloWorld.java")
err := cmd.Run()
但这不起作用:
我错过了什么,我该如何解决这个问题?
func Java(filePath string) {
fmt.Println("compiler start")
cmd := exec.Command("javac", filePath)
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Println("compiler End")
}
【问题讨论】:
-
string(filePath)的输出是什么? -
@Christian 输出是java文件的路径:./helloworld/workspace/src/main/java/com/coveros/demo/helloworld/HelloWorld.java
-
但是这个的实际输出是什么:
fmt.Println(string(filePath))这是否显示了文件的正确路径? -
是的,如果我运行
fmt.Println(string(filePath))它会显示我上面提到的路径。这就是为什么如果它清楚地返回我需要的东西对我来说不起作用。不确定我是否遗漏了什么 -
你确定当前工作目录在这两种情况下都是一样的吗? (即您的程序在此期间没有更改目录?)
标签: go