示例#1
0
func (self *ClassLoader) parseClassData(name string, data []byte) *Class {
	cf, err := classfile.Parse(data)
	if err != nil {
		// todo
		panic("failed to parse class file: " + name + "!" + err.Error())
	}

	return newClass(cf)
}
示例#2
0
func handleClass(f *zip.File) {
	//fmt.Printf("%v\n", f.Name)

	// open classfile
	rc, err := f.Open() // func (f *File) Open() (rc io.ReadCloser, err error)
	if err != nil {
		panic(err.Error())
	}

	// read class data
	data, err := ioutil.ReadAll(rc) // func ReadAll(r io.Reader) ([]byte, error)
	rc.Close()
	if err != nil {
		panic(err.Error())
	}

	// parse classfile
	cf, err := classfile.Parse(data)
	if err != nil {
		panic(err.Error())
	}

	handleClassfile(cf)
}