Könnte mir vielleicht jemand den Gefallen tun und die Datei snowball.tartarus.org/dist/libstemmer_java.tgz bei sich entpacken und kompilieren? Dazu aus dem java-Unterverzeichnis den folgenden Befehl ausführen:
Es handelt sich um den Porter Stemmer. Mein Problem: Ich kann zwar alles kompilieren, aber die Datei TestApp.class hinterher nicht ohne gravierende Fehlermeldungen ausführen. Ich frage mich nun, ob das nur bei mir schief läuft und was ich dagegen tun kann.
Alternativ ist hier der Code des TestApp-Programms. Vielleicht findet jemand von Euch auf Anhieb den Fehler?
Mir wird dabei folgende Meldung rausgeworfen:
Ich habe leider echt keinen Plan...
Code:
javac org/tartarus/snowball/*.java org/tartarus/snowball/ext/*.java
Es handelt sich um den Porter Stemmer. Mein Problem: Ich kann zwar alles kompilieren, aber die Datei TestApp.class hinterher nicht ohne gravierende Fehlermeldungen ausführen. Ich frage mich nun, ob das nur bei mir schief läuft und was ich dagegen tun kann.
Alternativ ist hier der Code des TestApp-Programms. Vielleicht findet jemand von Euch auf Anhieb den Fehler?
Code:
package org.tartarus.snowball;
import java.lang.reflect.Method;
import java.io.Reader;
import java.io.Writer;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.OutputStream;
import java.io.FileOutputStream;
public class TestApp {
private static void usage()
{
System.err.println("Usage: TestApp <algorithm> <input file> [-o <output file>]");
}
public static void main(String [] args) throws Throwable {
if (args.length < 2) {
usage();
return;
}
Class stemClass = Class.forName("org.tartarus.snowball.ext." +
args[0] + "Stemmer");
SnowballStemmer stemmer = (SnowballStemmer) stemClass.newInstance();
Reader reader;
reader = new InputStreamReader(new FileInputStream(args[1]));
reader = new BufferedReader(reader);
StringBuffer input = new StringBuffer();
OutputStream outstream;
if (args.length > 2) {
if (args.length >= 4 && args[2].equals("-o")) {
outstream = new FileOutputStream(args[3]);
} else {
usage();
return;
}
} else {
outstream = System.out;
}
Writer output = new OutputStreamWriter(outstream);
output = new BufferedWriter(output);
int repeat = 1;
if (args.length > 4) {
repeat = Integer.parseInt(args[4]);
}
Object [] emptyArgs = new Object[0];
int character;
while ((character = reader.read()) != -1) {
char ch = (char) character;
if (Character.isWhitespace((char) ch)) {
if (input.length() > 0) {
stemmer.setCurrent(input.toString());
for (int i = repeat; i != 0; i--) {
stemmer.stem();
}
output.write(stemmer.getCurrent());
output.write('\n');
input.delete(0, input.length());
}
} else {
input.append(Character.toLowerCase(ch));
}
}
output.flush();
}
}
Mir wird dabei folgende Meldung rausgeworfen:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: TestApp (wrong name: org/tartarus/snowball/TestApp)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:637)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)