The C++ front-end (and probably the C front-end) strips zero-width (and possibly unnamed) bitfields after class layout. This can be justified in that those bitfields only affect layout; one doesn't need the middle-end to copy them around, etc. So, you could probably fix this in the Java front end in the same way. From your patch, it looks like you're letting the back end see these bitfields, and also that their DECL_SIZE is not set correctly, which is dangerous in general.
So, I would suggest fixing this in the Java front end. Note that the Ada front-end also has zero-width bitfield (they are of aggregate type, though, and they are not and cannot be removed (since they can be referenced). DECL_SIZE is set correctly, though, but this bug is not encountered (at least I've never seen it).