You’ll need to fly into the St Thomas airport (STT), and then take a ferry to St John. There are ferries that depart out of Crown Bay, Red Hook, and Charlotte Amalie.
Hotel
The Westin St. John Resort Villas
300B Chocolate Hole Road, Cruz Bay, St John 00830, U.S. Virgin Islands
$$$$
Hotel
Wharfside Village Hotel
Cruz Bay, St John 00831, U.S. Virgin Islands
$$$
Hotel
The Flamingo House
Cruz Bay, St John, U.S. Virgin Islands
$$
Hotel
The Inn at Tamarind Court
Southside Road, Cruz Bay, St John 00831, U.S. Virgin Islands