opt, err := nats.NkeyOptionFromSeed("seed.txt")
if err != nil {
	log.Fatal(err)
}
nc, err := nats.Connect("localhost", opt)
if err != nil {
	log.Fatal(err)
}
defer nc.Close()

// Do something with the connection

NKey theNKey = NKey.createUser(null); // really should load from somewhere
Options options = new Options.Builder().
            server("nats://localhost:4222").
            authHandler(new AuthHandler(){
                public char[] getID() {
                    try {
                        return theNKey.getPublicKey();
                    } catch (GeneralSecurityException|IOException|NullPointerException ex) {
                        return null;
                    }
                }

                public byte[] sign(byte[] nonce) {
                    try {
                        return theNKey.sign(nonce);
                    } catch (GeneralSecurityException|IOException|NullPointerException ex) {
                        return null;
                    }
                }

                public char[] getJWT() {
                    return null;
                }
            }).
            build();
Connection nc = Nats.connect(options);

// Do something with the connection

nc.close();