@Meatballs1: Yes, Java payloads should be .class, that way you could do nice encoders/obfuscators too that work on the .class level. Currently Java Payloads are not .class, because they need a .class and a .properties file (partly historical since originally Metasploit could not sign signed applets itself and changing the .properties file does not require re-signing; partly because of the lack of a good .class file manipulation framework for Ruby - at least none that I know of). The "Upstream" JavaPayload project creates payloads as .class files, and of course can wrap them in various different formats once created.

An unrelated side note: Any special reason why encoders that encode a binary blob  as source code (like "c" or "bash" "java") are allowed for native payloads (or Firefox payloads) but not for Java payloads? Is it that uncommon that  I want to drop a .jar from a c/bash program, or serve it from a webserver written in Java?