I do it a lot. These single-file programs can be called Java scripts when run without compilation.
$ ./shebang.java
./shebang.java:1: error: illegal character: '#'
#!/usr/bin/java
^
./shebang.java:1: error: class, interface, enum, or record expected
#!/usr/bin/java
^
2 errors
error: compilation failed
Self-executable jars though, that's an interesting idea. No reason why it can't work, zip archives are read from the end, you can put anything in the beginning, including "#!/usr/bin/java -jar" java -jar $0
The rest of it sets up the environment (JAVA_OPTS, -Xmx, etc).Oh so actually, you can use a shebang, just without the .java extension and with the "--source" flag, it's specifically written out in that spec. I was doing my experiment wrong!