diff --git a/src/bindings/java/SConscript b/src/bindings/java/SConscript
index f014b2f0b5d55c5a247388d7613df75b5a34bc49..91b9d67bd8857f2a05144681e35651104e58a658 100644
--- a/src/bindings/java/SConscript
+++ b/src/bindings/java/SConscript
@@ -8,15 +8,6 @@ javaenv['ENV']['LD_LIBRARY_PATH'] = os.path.dirname(str(libhammer_shared[0]))
 def PrependDir(dir, filelist):
     return [os.path.join(dir,x) for x in filelist]
 
-jsources = [
-    "Parser.java",
-    "ParsedToken.java",
-    "ParseResult.java",
-    "Hammer.java",
-    "Action.java",
-    "Predicate.java"
-]
-
 csources = [
     "com_upstandinghackers_hammer_Hammer.c",
     "com_upstandinghackers_hammer_ParsedToken.c",
@@ -24,12 +15,9 @@ csources = [
     "com_upstandinghackers_hammer_ParseResult.c"   
 ]
 
-classes = env.Java(target = 'classes', source = 'jsrc/com/upstandinghackers/hammer')
-jni_headers = javaenv.JavaH(target = 'native', source = classes)
-Default(jni_headers)
+classes = javaenv.Java(target = 'classes', source = '#src/bindings/java/jsrc')
+jni_headers = javaenv.JavaH(target = 'csrc', source = classes)
 
-#native_dir = 'lib-' + sys.platform
-#native_src = PrependDir(native_dir, csources)
-#javaenv.BuildDir(native_dir, 'csrc', duplicate=0)
-#libhammer_java = javaenv.SharedLibrary(native_dir + "/Hammer", native_src)
-#Default(libhammer_java)
\ No newline at end of file
+native_src = PrependDir('csrc', csources)
+libhammer_java = javaenv.SharedLibrary('libjhammer', [native_src, libhammer_shared])
+Default(libhammer_java)
\ No newline at end of file
diff --git a/src/bindings/java/jsrc/Action.java b/src/bindings/java/jsrc/Action.java
deleted file mode 100644
index aecb713e44148f02aa76a1555b9d0a77bc608e21..0000000000000000000000000000000000000000
--- a/src/bindings/java/jsrc/Action.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.upstandinghackers.hammer;
-
-import java.util.List;
-
-public interface Action
-{
-    public List<ParsedToken> execute(ParseResult p);
-}
diff --git a/src/bindings/java/jsrc/Hammer.java b/src/bindings/java/jsrc/Hammer.java
deleted file mode 100644
index 3e06a91eca4b15eebbfe28c99547829a3c2d6068..0000000000000000000000000000000000000000
--- a/src/bindings/java/jsrc/Hammer.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.upstandinghackers.hammer;
-import java.util.HashMap;
-
-public class Hammer
-{
-    public final static byte BYTE_BIG_ENDIAN = 0x1;
-    public final static byte BIT_BIG_ENDIAN = 0x2;
-    public final static byte BYTE_LITTLE_ENDIAN = 0x0;
-    public final static byte BIT_LITTLE_ENDIAN = 0x0;
-   
-    static final HashMap<Integer, TokenType> tokenTypeMap = new HashMap<Integer, TokenType>();
-
-    public enum TokenType
-    {
-        NONE(1),
-        BYTES(2),
-        SINT(4),
-        UINT(8),
-        SEQUENCE(16),
-        ERR(32),
-        USER(64);
-
-        private int value;
-        public int getValue() { return this.value; }
-        private TokenType(int value) { this.value = value; }
-    }
-
-    static
-    {
-        for(TokenType tt : TokenType.values())
-        {
-            Hammer.tokenTypeMap.put(new Integer(tt.getValue()), tt);
-        }
-    }
-
-    public static native ParseResult parse(Parser parser, byte[] input, int length);
-    public static native Parser token(byte[] str, int length);
-    public static native Parser ch(byte c);
-    public static native Parser chRange(byte from, byte to);
-    public static native Parser intRange(Parser p, long lower, long upper);
-    public static native Parser bits(int len, boolean sign);
-    public static native Parser int64();
-    public static native Parser int32();
-    public static native Parser int16();
-    public static native Parser int8();
-    public static native Parser uInt64();
-    public static native Parser uInt32();
-    public static native Parser uInt16();
-    public static native Parser uInt8();
-    public static native Parser whitespace(Parser p);
-    public static native Parser left(Parser p, Parser q);
-    public static native Parser right(Parser p, Parser q);
-    public static native Parser middle(Parser p, Parser x, Parser q);
-//    public static native Parser action(Parser p, Action a);
-    public static native Parser in(byte[] charset, int length);
-    public static native Parser endP();
-    public static native Parser nothingP();
-    public static native Parser sequence(Parser... parsers);
-    public static native Parser choice(Parser... parsers);
-    public static native Parser butNot(Parser p1, Parser p2);
-    public static native Parser difference(Parser p1, Parser p2);
-    public static native Parser xor(Parser p1, Parser p2);
-    public static native Parser many(Parser p);
-    public static native Parser many1(Parser p);
-    public static native Parser repeatN(Parser p, int n);
-    public static native Parser optional(Parser p);
-    public static native Parser ignore(Parser p);
-    public static native Parser sepBy(Parser p, Parser sep);
-    public static native Parser sepBy1(Parser p, Parser sep);
-    public static native Parser epsilonP();
-    public static native Parser lengthValue(Parser length, Parser value);
-//    public static native Parser attrBool(Parser p, Predicate pred);
-    public static native Parser and(Parser p);
-    public static native Parser not(Parser p);
-    public static native Parser indirect();
-}
diff --git a/src/bindings/java/jsrc/ParseResult.java b/src/bindings/java/jsrc/ParseResult.java
deleted file mode 100644
index e5ad6c94182e9c70aedcbb8fe81445cae12614c5..0000000000000000000000000000000000000000
--- a/src/bindings/java/jsrc/ParseResult.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.upstandinghackers.hammer;
-
-import java.util.List;
-
-public class ParseResult
-{
-    public native ParsedToken getAst();
-    public native long getBitLength();
-    
-    public native void free();
-    public long getInner() {return this.inner;}
-
-    private long inner;
-    ParseResult(long inner) {this.inner=inner;}
-}
diff --git a/src/bindings/java/jsrc/ParsedToken.java b/src/bindings/java/jsrc/ParsedToken.java
deleted file mode 100644
index efbc8ed7a388b0940e45fb00574f14ea9bc621c0..0000000000000000000000000000000000000000
--- a/src/bindings/java/jsrc/ParsedToken.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.upstandinghackers.hammer;
-
-public class ParsedToken
-{
-    public Hammer.TokenType getTokenType()
-    {
-        int tt = this.getTokenTypeInternal();
-        if(0==tt)
-            return null;
-        return Hammer.tokenTypeMap.get(new Integer(tt));
-    }
-
-    private native int getTokenTypeInternal();
-    public native int getIndex();
-    public native byte getBitOffset();
-    public native byte[] getBytesValue();
-    public native long getSIntValue();
-    public native long getUIntValue();
-    public native double getDoubleValue();
-    public native float getFloatValue();
-    public native ParsedToken[] getSeqValue();
-//    public native Object getUserValue();
-
-    native void setTokenType(Hammer.TokenType type);
-    native void setIndex(int index);
-    native void setBitOffset(byte offset);
-    native void setBytesValue(byte[] value);
-    native void setSIntValue(long value);
-    native void setUIntValue(long value);
-    native void setDoubleValue(double value);
-    native void setFloatValue(float value);
-    native void setSeqValue(ParsedToken value[]);
-//    native void setUserValue(Object value);
-    
-//    public native void free();
-    public long getInner() {return this.inner;}
-
-    private long inner;
-    ParsedToken(long inner) {this.inner=inner;}
-}
diff --git a/src/bindings/java/jsrc/Parser.java b/src/bindings/java/jsrc/Parser.java
deleted file mode 100644
index 2e924cb2ba26a6b21d777deb1bc076f9e7ec1eac..0000000000000000000000000000000000000000
--- a/src/bindings/java/jsrc/Parser.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.upstandinghackers.hammer;
-
-public class Parser
-{
-    public native void bindIndirect(Parser inner);
-    public native void free();
-    public long getInner() {return this.inner;}
-
-    private long inner;
-    Parser(long inner) {this.inner=inner;}
-}
diff --git a/src/bindings/java/jsrc/Predicate.java b/src/bindings/java/jsrc/Predicate.java
deleted file mode 100644
index 52ca4bf7b94569906a072a73587a75b95550a1f4..0000000000000000000000000000000000000000
--- a/src/bindings/java/jsrc/Predicate.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.upstandinghackers.hammer;
-
-public interface Predicate
-{
-    public boolean apply(ParseResult p);
-}