上QQ阅读APP看书,第一时间看更新
2.4 测试本章代码
打开ch02/main.go文件,添加两条import语句,代码如下:
package main import "fmt" import "strings" import "jvmgo/ch02/classpath" func main() {...} func startJVM(cmd *Cmd) {...}
main()函数不用变,重写startJVM()函数,代码如下:
func startJVM(cmd *Cmd) { cp := classpath.Parse(cmd.XjreOption, cmd.cpOption) fmt.Printf("classpath:%v class:%v args:%v\n", cp, cmd.class, cmd.args) className := strings.Replace(cmd.class, ".", "/", -1) classData, _, err := cp.ReadClass(className) if err ! = nil { fmt.Printf("Could not find or load main class %s\n", cmd.class) return } fmt.Printf("class data:%v\n", classData) }
startJVM()先打印出命令行参数,然后读取主类数据,并打印到控制台。虽然还是无法真正启动Java虚拟机,不过相比第1章,已经有了很大的进步。打开命令行窗口,执行下面的命令编译本章代码。
go install jvmgo\ch02
编译成功后,在D:\go\workspace\bin目录下出现ch02.exe文件。执行ch02.exe,指定好-Xjre选项和类名,就可以把class文件的内容打印出来。虽然只是一堆看似杂乱无章的数字,但成就感还是会油然而生。笔者的测试结果如图2-1所示。
图2-1 ch02.exe的测试结果