IPv6 has two types of IP addresses: global addresses and non-global addresses. Global addresses are unique across the internet (via judicious allocation of network prefixes by authorities). They make up the range 2000::/3 (2000:: to 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff). Global addresses generally require no special treatment.
Non-global addresses, like link-local (fe80::/10) and site-local addresses (fec0::/10) are not guaranteed to be unique - in the extreme case, two interfaces on the same host can have the same link-local address. This means that they cannot be used on their own when binding to a socket, but must have extra information (a zone id or sometimes called scope) added to them to disambiguate them. The zone id is basically the interface you want the message to go out on. A scoped link-local address is one which has a scope appended to it. The way to notate this is to append the scope to the link-local address after a % sign:
<link-local IP address>%<zone id>
where the zone Id can be numerical or simply the next name of the interface. For example, fe80::215:58ff:fec8:81a8%eth0.
This issue is tied to a corresponding issue in JGroups.