According to the following chart on the Singapore Airlines website
http://www.singaporeair.com/saa/en_U...FOALLevels.pdf
you can earn Krisflyer miles if your ticket is any of the following classes
Business class: J, D, R and Z
Economy class: B, H, K, L, M, Q, S, V, W, X, Y, O and N (except flights to USA/Carribean)
If you fly Economy class you earn 100% of miles flown (for LHR-JFK, 3,444 miles as given by Singapore Airlines), while if you fly Business class you will earn 125% of the miles flown (4,305 miles)
Unfortunately however, the miles earned will not be "Elite miles" and will not count for status with Krisflyer, as Virgin Atlantic is not in the Star Alliance.
From the Krisflyer
Terms and Conditions:
Only KrisFlyer Elite miles earned on Singapore Airlines, SilkAir and Star Alliance airlines (in any class) will count towards KrisFlyer Elite Silver and KrisFlyer Elite Gold membership.
You can give the KrisFlyer membership number when you make your booking, but if you do this with a travel agent it will be better to verify with the check-in counter when you check in that they have registered the membership number information. If this is done properly then the mileage should automatically credit into the KrisFlyer account. If you haven't joined Krisflyer first then you should do so in advance (online).