【发布时间】:2012-12-04 12:11:35
【问题描述】:
我尝试从如下所示的 Google Go 程序启动 JVM:
package main
import "fmt"
import "os"
import "log"
func main() {
var name string
name="\\jrex64\\bin\\java.exe"
var path="-Xbootclasspath:jrex64\\lib\\rt.jar;"+
"jrex64\\lib\\jfxrt.jar;"+
"jrex64\\lib\\resources.jar;"+
"jrex64\\lib\\ext\\sunjce_provider.jar;"+
"jrex64\\lib\\ext\\zipfs.jar;"+
"jrex64\\lib\\ext\\sunmscapi.jar;"+
"jrex64\\lib\\ext\\sunec.jar;"+
"jrex64\\lib\\ext\\dnsns.jar;"+
"jrex64\\lib\\ext\\access-bridge-64.jar;"+
"jrex64\\lib\\security\\local_policy.jar;"+
"jrex64\\lib\\jce.jar;"+
"jrex64\\lib\\jfr.jar;"+
"jrex64\\lib\\jsse.jar;"+
"jrex64\\lib\\charsets.jar;"+
"jrex64\\lib\\";
var args[] string=make([]string,4)
args[0]="-verbose"
args[1]=path;
args[2]="-cp Ganesha_lib\\*"
args[3]="-jar Ganesha.jar"
var attr* os.ProcAttr
proc,err:=os.StartProcess(name,args,attr)
proc.Wait();
if err!=nil {
fmt.Println("an error occurred.\n")
log.Fatal(err)
}
}
这是我的第一个围棋程序。我完全被以下错误弄得不知所措:
panic:运行时错误:无效的内存地址或 nil 指针取消引用 [信号0xc0000005代码=0x0地址=0x0 pc=0x4278b5] goroutine 1 [运行]: os.startProcess(0x4aacb4, 0x14, 0xf840001eb0, 0x500000005, 0x0, ...) C:/Users/ADMINI~1/AppData/Local/Temp/2/bindist767862039/go/src/pkg/os/exec_posix.go:28 +0x152 os.StartProcess(0x4aacb4, 0x14, 0xf840001eb0, 0x500000005, 0x0, ...) C:/Users/ADMINI~1/AppData/Local/Temp/2/bindist767862039/go/src/pkg/os/doc.go:24 +0x5c main.main() D:/MyGoProject/src/main.go:60 +0x23c goroutine 2 [系统调用]: 由 runtime.main 创建 C:/Users/ADMINI~1/AppData/Local/Temp/2/bindist767862039/go/src/pkg/runtime/proc.c:221 进程以退出代码 2 结束
我该如何解释这个错误代码?什么地方出了错?以及如何获取 JVM startet - 它位于 Go 可执行文件的子目录中。
【问题讨论】:
-
尝试在多行字符串中使用反引号 (`) 而不是双引号。您不需要用反引号来转义反斜杠。 See this example。此外,还有一个用于以独立于平台的方式连接路径的包,请参阅pkg/path/filepath。
标签: go