diff --git a/cmd/gobind/main.go b/cmd/gobind/main.go
index 2546f37..88a6c6e 100644
--- a/cmd/gobind/main.go
+++ b/cmd/gobind/main.go
@@ -9,8 +9,6 @@
 	"flag"
 	"fmt"
 	"go/ast"
-	"go/build"
-	"go/importer"
 	"go/types"
 	"io/ioutil"
 	"log"
@@ -74,6 +72,7 @@
 	if err != nil {
 		log.Fatal(err)
 	}
+
 	jrefs, err := importers.AnalyzePackages(allPkg, "Java/")
 	if err != nil {
 		log.Fatal(err)
@@ -102,21 +101,7 @@
 		}
 	}
 
-	ctx := build.Default
-	if *tags != "" {
-		ctx.BuildTags = append(ctx.BuildTags, strings.Split(*tags, ",")...)
-	}
-
-	// Determine GOPATH from go env GOPATH in case the default $HOME/go GOPATH
-	// is in effect.
-	if out, err := exec.Command(goBin(), "env", "GOPATH").Output(); err != nil {
-		log.Fatal(err)
-	} else {
-		ctx.GOPATH = string(bytes.TrimSpace(out))
-	}
 	if len(classes) > 0 || len(otypes) > 0 {
-		// After generation, reverse bindings needs to be in the GOPATH
-		// for user packages to build.
 		srcDir := *outdir
 		if srcDir == "" {
 			srcDir, err = ioutil.TempDir(os.TempDir(), "gobind-")
@@ -130,10 +115,6 @@
 				log.Fatal(err)
 			}
 		}
-		if ctx.GOPATH != "" {
-			ctx.GOPATH = string(filepath.ListSeparator) + ctx.GOPATH
-		}
-		ctx.GOPATH = srcDir + ctx.GOPATH
 		if len(classes) > 0 {
 			if err := genJavaPackages(srcDir, classes, jrefs.Embedders); err != nil {
 				log.Fatal(err)
@@ -144,24 +125,34 @@
 				log.Fatal(err)
 			}
 		}
+
+		// Add a new directory to GOPATH where the file for reverse bindings exist, and recreate allPkg.
+		// It is because the current allPkg did not solve imports for reverse bindings.
+		var gopath string
+		if out, err := exec.Command(goBin(), "env", "GOPATH").Output(); err != nil {
+			log.Fatal(err)
+		} else {
+			gopath = string(bytes.TrimSpace(out))
+		}
+		if gopath != "" {
+			gopath = string(filepath.ListSeparator) + gopath
+		}
+		gopath = srcDir + gopath
+		cfg.Env = append(os.Environ(), "GOPATH="+gopath)
+		allPkg, err = packages.Load(cfg, flag.Args()...)
+		if err != nil {
+			log.Fatal(err)
+		}
 	}
 
 	typePkgs := make([]*types.Package, len(allPkg))
 	astPkgs := make([][]*ast.File, len(allPkg))
-	// The "source" go/importer package implicitly uses build.Default.
-	oldCtx := build.Default
-	build.Default = ctx
-	defer func() {
-		build.Default = oldCtx
-	}()
-	imp := importer.For("source", nil)
 	for i, pkg := range allPkg {
-		var err error
-		typePkgs[i], err = imp.Import(pkg.PkgPath)
-		if err != nil {
-			errorf("%v\n", err)
+		if len(pkg.Errors) > 0 {
+			errorf("%v", pkg.Errors)
 			return
 		}
+		typePkgs[i] = pkg.Types
 		astPkgs[i] = pkg.Syntax
 	}
 	for _, l := range langs {
