Skip to content

Instantly share code, notes, and snippets.

@phlash
Created March 2, 2018 21:53
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save phlash/a5e914430bf017472d6182af4c25fd0f to your computer and use it in GitHub Desktop.
Save phlash/a5e914430bf017472d6182af4c25fd0f to your computer and use it in GitHub Desktop.
Self-executing single-file Java programs...
#!/bin/sh
# This self-executing Java program uses the following /embedded shell script/ to compile & execute itself..
# magic constant holding length of script
SKIP=26
# parse our name..
FILE=`basename $0 .java`
# get some working space, clean up old crud
WORK=/tmp/java-hack
mkdir -p $WORK
find $WORK -mtime 7 |xargs rm -f
# transform ourselves to compilable Java (aka, strip the shell script head), save the timestamp
tail +$SKIP $0 > $WORK/$FILE.java
touch -r $0 $WORK/$FILE.java
# compile if required..
[ -r $WORK/$FILE.class -a $WORK/$FILE.java -ot $WORK/$FILE.class ] || javac -d $WORK $WORK/$FILE.java
# execute..
java -cp $WORK $FILE $*
exit $?
---------- Write some Java dude! ----------
public class Ick {
public static void main(String[] args) {
System.out.println("Whoo Hooo!");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment