2017-06-24 16 views
0

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(); 
    } 
+0

Ist die JAR-Datei mit dieser Klasse auf dem Server verfügbar, auf dem Sie die Software ausführen? –

Antwort

0

Die Lösung wurde auf Web Deployment Assembly auf Eigenschaften serch (Rechtsklick auf das Projekt => Eigenschaften) => add = finden> Archiviere aus dem Dateisystem und füge dort das Weka-Glas hinzu.

Verwandte Themen