Ich habe eine Methode, in der ich eine ARFF-Datei erstellen und wenn ich es (mit dem Code in den wichtigsten Methoden) funktioniert wie erwartet. Wenn ich versuche, den Code in eine andere Methode zu bringen und dann die Methode von einer anderen Klasse (in meinem Fall von einer Servlet-Klasse) aufzurufen, erhalte ich den Fehler von oben, wenn der Konstruktor aufgerufen wird. Mein Wekka-Glas ist 3.8.1 und die FastVector-Klasse ist entzogen. Irgendeine Idee wie kann ich das lösen? Hier ist der Code:java.lang.ClassNotFoundException: weka.core.FastVector
public void createTestData(int id_student, String teacher_subject, int id_level, boolean isMand)
throws IOException {
FastVector attribute, attributeVals;
Instances data;
Instances dataRel;
double[] vals;
String isMandatory = "" + isMand;
int level = 10;
String teacher = teacher_subject.split("-")[1];
String subject = teacher_subject.split("-")[0];
// 1. set up attributes
attribute = new FastVector();
attribute.addElement(new Attribute("id_student"));
// - string
attribute.addElement(new Attribute("subject", (FastVector) null));
attribute.addElement(new Attribute("teacher", (FastVector) null));
// - numeric
attribute.addElement(new Attribute("level"));
// - nominal
attributeVals = new FastVector();
attributeVals.addElement("true");
attributeVals.addElement("false");
attribute.addElement(new Attribute("isMandatory", attributeVals));
// attribute.addElement(new Attribute("rezult"));
// 2. create Instances object
data = new Instances("MyRelation", attribute, 0);
// 3. fill with data
// first instance
vals = new double[data.numAttributes()];
// - numeric
vals[0] = id_student;
// - nominal
vals[1] = data.attribute(1).addStringValue(subject);
// - string
vals[2] = data.attribute(2).addStringValue(teacher);
// - date
vals[3] = level;
vals[4] = attributeVals.indexOf(isMandatory);
// vals[5] = 10;
// add
data.add(new DenseInstance(1.0, vals));
// 4. output data
System.out.println(data);
ArffSaver arffSaverInstance = new ArffSaver();
arffSaverInstance.setInstances(data);
arffSaverInstance.setFile(new File("test.arff"));
arffSaverInstance.writeBatch();
}
In der Servlet-Klasse:
DataForTrain testData = new DataForTrain();
try {
testData.createTestData(id_student, teacher_subject, id_level, isMandatory);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Ist die JAR-Datei mit dieser Klasse auf dem Server verfügbar, auf dem Sie die Software ausführen? –