Or so it seems. According to Tibco support, when validating Java custom functions in Designer one of the things it checks is the access_flags in the class file (to ensure that the method is accessible).
Based on JVM class file spec the access flags should be either 0x21 (public) or 0x31 (public final); both of these values are fine but the validator rejects the latter. The good news however is that running the class in either the tester or in a deployed process engine works fine.
Update: I forgot to mention this, but the error message in the validator is “MISSING: Invalid java custom function..message”. Should help out searching via the Goog.