diff -r 74313f596326 weka-python-glue/Makefile --- a/weka-python-glue/Makefile Sun Mar 02 12:58:09 2008 +0100 +++ b/weka-python-glue/Makefile Thu Mar 06 06:53:54 2008 +0100 @@ -1,8 +1,22 @@ all: weka.so WekaGlue.class -all: weka.so WekaGlue.class +TARGETS=weka.so WekaGlue.class + +all: $(TARGETS) + +JAVA_HOME?=`java-config -o` +JAVA_LIBDIR=$(JAVA_HOME)/jre/lib/i386 +JAVA_INCLUDES=-I$(JAVA_HOME)/include/linux -I$(JAVA_HOME)/include +JAVA_LIB=-L$(JAVA_LIBDIR) -Wl,--rpath -Wl,$(JAVA_LIBDIR) -ljava -lverify +JVM_LIB=-L$(JAVA_LIBDIR)/server -Wl,--rpath -Wl,$(JAVA_LIBDIR)/server -ljvm +JNI_LIB=$(JAVA_LIB) $(JVM_LIB) -ljavaplugin_jni + +LDFLAGS+=$(JNI_LIB) -lpython2.4 +CPPFLAGS+=$(JAVA_INCLUDES) weka.so: wekapy.c weka_jni.c - gcc -std=c99 -shared -o $@ $^ -L/opt/jdk1.5.0_06/jre/lib/i386/ -lpython2.4 -ljavaplugin_jni -ljava -WekaGlue.class: WekaGlue.java + gcc -std=c99 -O -shared -o $@ $^ $(CPPFLAGS) $(LDFLAGS) + +%.class: %.java javac $^ + clean: - rm -f WekaGlue.class weka.so \ No newline at end of file + rm -f $(TARGETS) diff -r 74313f596326 weka-python-glue/WekaGlue.java --- a/weka-python-glue/WekaGlue.java Sun Mar 02 12:58:09 2008 +0100 +++ b/weka-python-glue/WekaGlue.java Thu Mar 06 06:53:54 2008 +0100 @@ -1,4 +1,3 @@ - import java.io.*; import java.util.*; import weka.core.*; @@ -14,6 +13,8 @@ public class WekaGlue { try { ObjectInputStream is = new ObjectInputStream(new FileInputStream(modelName)); classifier = (Classifier) is.readObject(); + is.close(); + dataset = new Instances(new FileReader(datasetName), 0); dataset.setClassIndex(dataset.numAttributes() - 1); @@ -23,7 +24,6 @@ public class WekaGlue { // System.err.println("Loaded classifier."); // System.err.flush(); - is.close(); return 0; } catch(Exception e) { e.printStackTrace(); @@ -48,8 +48,7 @@ public class WekaGlue { try { if (dataset.attribute(i).isNumeric()) { Double d = new Double(arguments[i]); - double d2 = d.doubleValue(); - instance.setValue(i, d2); + instance.setValue(i, d.doubleValue()); } else { // use this for strings instance.setValue(i, arguments[i]); } @@ -70,5 +69,4 @@ public class WekaGlue { return null; } } - } diff -r 74313f596326 weka-python-glue/weka_jni.c --- a/weka-python-glue/weka_jni.c Sun Mar 02 12:58:09 2008 +0100 +++ b/weka-python-glue/weka_jni.c Thu Mar 06 06:53:54 2008 +0100 @@ -63,7 +63,7 @@ char* jni_weka_classify(int argc, char** /*exit(1); */ return NULL; } - out = (jstring)strdup(tmp); + out = strdup(tmp); (*env)->ReleaseStringUTFChars(env, jout, tmp); (*env)->DeleteLocalRef(env, jout); return out; diff -r 74313f596326 weka-python-glue/wekapy.c --- a/weka-python-glue/wekapy.c Sun Mar 02 12:58:09 2008 +0100 +++ b/weka-python-glue/wekapy.c Thu Mar 06 06:53:54 2008 +0100 @@ -1,4 +1,4 @@ -#include +#include extern int nattrs; int jni_weka_create_classifier(char* modelName, char* datasetName);