The llvm clang compiler can generate bitcode output.
Then lljvm can translate it to java bytecode.
The resulting class file can be combined into a runnable jar file.

See

https://github.com/maropu/lljvm-translator
