korea1 Geschrieben 28. Oktober 2003 Teilen Geschrieben 28. Oktober 2003 hi, bei folgendem schnipsel bekomme ich obige fehlermeldung. was ist falsch? public final class MyXMLFilter extends XMLFilterImpl { public MyXMLFilter(XMLReader parent) throws SAXException { super(parent); } public void characters(char[] ch, int start, int length) throws SAXException{ //System.out.print(" method characters "); //System.out.print(" ch "); //System.out.print(" start "); //System.out.print(" length "); } static public void main(String[] args) throws Exception { System.out.print(" main2 "); characters("hallo", 1, 5); } } [/PHP] irgendetwas mag er am aufruf der funktion nicht. aber was?? danke korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 28. Oktober 2003 Teilen Geschrieben 28. Oktober 2003 Und was findet er nicht, die Fehlermeldung solltest du schon komplett posten. Der komplette Stacktrace ist allerdings nicht nötig. Hast du die Klasse XMLFilterImpl importiert? Befindet sich das entsprechende jar im classpath? Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 28. Oktober 2003 Autor Teilen Geschrieben 28. Oktober 2003 oh, sorry hier die fehlermeldung: symbol : method characters (java.lang.String,int,int) location: class MyXMLFilter characters("hallo", 1, 5); ^ und jar is im CLASSPATH. korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 28. Oktober 2003 Teilen Geschrieben 28. Oktober 2003 Wie da schon steht, du rufst eine Methode auf und übergibst einen String und 2 ints. Deine implementierte Methode allerdings erwartet ein char Array und 2 ints. Das sind unterschiedliche Typen und somit findet er die passende Methode nicht. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 28. Oktober 2003 Autor Teilen Geschrieben 28. Oktober 2003 das hatte ich übersehen. :floet: korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 28. Oktober 2003 Teilen Geschrieben 28. Oktober 2003 Bei einer richtigen IDE, bekommst du solche Fehler übrigens schon direkt bei der Code Eingabe angezeigt. Mit was arbeitest du? Probiere mal http://www.eclipse.org oder http://www.intellij.com/idea/ Wobei eclipse kostenlos, idea allerdings geeigneter für Anfänger ist. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 28. Oktober 2003 Autor Teilen Geschrieben 28. Oktober 2003 hi, ich arbeite mit dem sun one studio 4. hab erst vor ca. 3 tg mit java angefangen. is mir alles noch ein wenig suspekt. korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 28. Oktober 2003 Autor Teilen Geschrieben 28. Oktober 2003 hi, irre ich mich, aber so müsste ich doch ein array anlegen können, oder? und dann dieses an die funktion übergeben?? char[] my_char = { "hallo", "welt" }; characters(my_char, 1, 5); [/PHP] korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 28. Oktober 2003 Teilen Geschrieben 28. Oktober 2003 Nein, das wäre ein String Array: String[] my_array = { "hallo", "welt" }; ein char Array geht so: char[] my_char2 = { 'h','a','l','l','o' }; oder: char[] my_char3 =new String("hallo").toCharArray(); Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 28. Oktober 2003 Autor Teilen Geschrieben 28. Oktober 2003 ok, danke. ich hatte vorher zwar auch schon einzelne buchstaben, aber leider in "". scheinbar is das also nich egal. hm ok. aber jetzt bekomme ich folgende fehlermeldung: non-static method characters(char[],int,int) cannot be referenced from a static context hier nochmal mein quelltext: public final class MyXMLFilter extends XMLFilterImpl { public MyXMLFilter(XMLReader parent) throws SAXException { super(parent); } public void characters(char[] ch, int start, int length) throws SAXException { } static public void main(String[] args) throws Exception { System.out.print(" main2 "); char[] my_char = { 'h', 'a', 'l', 'l', 'o' }; characters(my_char, 1, 5); } } [/PHP] korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast roaxius Geschrieben 28. Oktober 2003 Teilen Geschrieben 28. Oktober 2003 Ja, es ist ja auch richtig, dass du aus einer static-Methode keine nicht static-Methode aufrufen kannst. Aus einer static-Methode kannst du nur Methoden aufrufen, die gelöst von einem Objekt lauffähig sind. Dies sind andere static-Methoden. Für diese Methoden ist keine Instanzierung einer Klasse nötig. Du könntest Abhilfe schaffen, indem du: 1. die static main() in eine andere Klasse schreibst und von dort ein Objekt deiner Klasse anlegst und die gewünschte Methode à la objekt.methode() aufrufst 2. in deiner static main() ein Objekt der eigenen Klasse anlegst und dann de facto genauso verfährst. Was du tust hängt davon ab, ob du in deiner XML-Klasse eine main() haben willst oder nicht... Hoffe, das wird so deutlich. Sonst kann ich morgen mal Code-Beispiele posten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 30. Oktober 2003 Autor Teilen Geschrieben 30. Oktober 2003 hi, also die vorgabe für mich is, dass die main in der klasse sein muss. mein code sieht jetzt so aus und ich bekomm folgende fehlermeldung: MyXMLFilter.java:40: cannot resolve symbol symbol : variable XMLReader location: class MyXMLFilter MyXMLFilter my_filter = new MyXMLFilter(XMLReader); ^ public final class MyXMLFilter extends XMLFilterImpl { public MyXMLFilter(XMLReader parent) throws SAXException { super(parent); } public void characters(char[] ch, int start, int length) throws SAXException { } static public void main(String[] args) throws Exception { MyXMLFilter my_filter = new MyXMLFilter(XMLReader); System.out.print(" main2 "); char[] my_char = { 'h', 'a', 'l', 'l', 'o' }; my_filter.characters(my_char, 1, 4); } } [/PHP] wenn ich ein objekt meiner klasse anlegen möchte, dann muss ich dass doch so machen: klasse obj_name = new konstruktor da mein konstruktor einen parameter hat müsste dass doch so gehen, oder? könntest du vielleicht doch mal ein code beispiel posten? danke korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 30. Oktober 2003 Teilen Geschrieben 30. Oktober 2003 Servus, Du übergibst in Deinem Konstruktor keine Instanz der Klasse XMLReader sondern führst einfach den Klassennamen auf. Erzeuge vorher eine Instanz und übergib die oder probier es mit new XMLReader() Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 30. Oktober 2003 Autor Teilen Geschrieben 30. Oktober 2003 hi, XMLReader my_reader = new XMLReader(); MyXMLFilter my_filter = new MyXMLFilter(my_reader); [/PHP] das bringt folgenden fehler: MyXMLFilter.java:61: org.xml.sax.XMLReader is abstract; cannot be instantiated XMLReader my_reader = new XMLReader(); ^ so funktionierts auch net: [PHP]MyXMLFilter my_filter = new MyXMLFilter(new XMLReader); bringt folgenden fehler: MyXMLFilter.java:62: '(' or '[' expected MyXMLFilter my_filter = new MyXMLFilter(new XMLReader); ^ MyXMLFilter.java:62: ')' expected MyXMLFilter my_filter = new MyXMLFilter(new XMLReader); ^ und so gings auch net: MyXMLFilter my_filter = new MyXMLFilter(new XMLReader()); das bringt dann diesen fehler: MyXMLFilter.java:62: org.xml.sax.XMLReader is abstract; cannot be instantiated MyXMLFilter my_filter = new MyXMLFilter(new XMLReader()); ^ hab ich dich falsch verstanden, oder wie hast du das gemeint? korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peregrin Geschrieben 30. Oktober 2003 Teilen Geschrieben 30. Oktober 2003 hi, prinzipiell gehts so: package de.myTest.test; public class TestClass { public static void main(String[] args) { TestClass testClass = new TestClass(new TestClass2()); // create an instance of TestClass testClass.doSomething(); // call instance of TestClass to do something } // Constructor public TestClass() { System.out.println("TestClass.TestClass"); } // business-logic implementation private void doSomething() { System.out.println("TestClass.doSomething"); } } package de.myTest.test; public class TestClass2 { public TestClass2() { } public void doSomething(){ System.out.println("TestClass2.doSomething"); } } in der statischen main-methode wird eine instanz der klasse erzeugt und deren nicht-statischen methoden können aufgerufen werden. [edit] sorry, hatte zuerst den falchen code kopiert, sollte jetzt so stimmen ;-)so [/edit] bei weiteren fragen einfach posten... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 30. Oktober 2003 Autor Teilen Geschrieben 30. Oktober 2003 zweifle ich an mir. hier nochmal mein code: public final class MyXMLFilter extends XMLFilterImpl { public MyXMLFilter(XMLReader parent) throws SAXException { super(parent); } private static void usage() { System.err.println("Usage: MyXMLFilter <input.xml> <output.xml>"); System.exit(1); } public void characters(char[] ch, int start, int length) throws SAXException { System.out.print(" bin drin "); } static public void main(String[] args) throws Exception { // Parse arguments if (args.length != 2) { usage(); } String inputFile = args[0]; String outputFile = args[1]; MyXMLFilter my_filter = new MyXMLFilter(new XMLReader()); my_filter.characters(my_char, 1, 4); SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware(true); SAXParser saxParser = spf.newSAXParser(); XMLReader xmlReader = saxParser.getXMLReader(); MyXMLFilter filter = new MyXMLFilter(xmlReader); Transformer transformer = TransformerFactory.newInstance().newTransformer(); Source source = new SAXSource(filter, new InputSource(new FileInputStream(inputFile))); Result result = new StreamResult(new FileOutputStream(outputFile)); transformer.transform(source, result); } } [/PHP] könnte mir mal bitte jmd die richtige code zeile posten. ich hab keine ahnung mehr was da nicht passt. huch ein fehler is weg, da hab ich vergessen meine kommentare rauszunehmen, aber der is geblieben::floet: MyXMLFilter.java:55: org.xml.sax.XMLReader is abstract; cannot be instantiated MyXMLFilter my_filter = new MyXMLFilter(new XMLReader()); ^ danke korea1 kann es vielleicht sein, dass er ein prob damit hat, dass ich ein zweites obj. anlege. hab ja schon mal ein obj. von dieser klasse erzeugt --> filter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 30. Oktober 2003 Teilen Geschrieben 30. Oktober 2003 Hier weiter zu machen, hat überhaupt keinen Sinn. Nimm dir ein Javabuch zur Hand www.javabuch.de und gehe zumindest die Kapitel über objektorientierung und Methodendeklarationen durch. Dieses try and error führt doch zu nix. Gruß Jaraz PS: Wenn deine IDE das unterstütz, schalte mal die Fehleranzeige während der Eingabe an, dann passieren falsche Konstruktoren Aufrufe gar nicht erst. Falls Sun One das nicht kann, nimm Idea, Eclipse oder JBuilder. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 30. Oktober 2003 Autor Teilen Geschrieben 30. Oktober 2003 hi, also ich hatte mir oop in java schon auf mehreren internetseiten durchgelesen, das hatte mich aber nich weitergebracht. in c++ hab ich eigentlich keine probs mit der oop. und in java isses ja nich großartig anders. ich habs jetzt aber so gelöst und es kommt kein fehler mehr. public final class MyXMLFilter extends XMLFilterImpl { public MyXMLFilter(XMLReader parent) throws SAXException { super(parent); } private static void usage() { System.err.println("Usage: MyXMLFilter <input.xml> <output.xml>"); System.exit(1); } public void characters(char[] ch, int start, int length) throws SAXException { System.out.print(" bin drin "); } static public void main(String[] args) throws Exception { if (args.length != 2) { usage(); } String inputFile = args[0]; String outputFile = args[1]; System.out.print(" main "); char[] my_char = { 'h', 'a', 'l', 'l', 'o' }; SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware(true); SAXParser saxParser = spf.newSAXParser(); XMLReader xmlReader = saxParser.getXMLReader(); MyXMLFilter filter = new MyXMLFilter(xmlReader); filter.characters(my_char, 1, 4); Transformer transformer = TransformerFactory.newInstance().newTransformer(); Source source = new SAXSource(filter, new InputSource(new FileInputStream(inputFile))); Result result = new StreamResult(new FileOutputStream(outputFile)); transformer.transform(source, result); } } [/PHP] danke euch allen korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 30. Oktober 2003 Teilen Geschrieben 30. Oktober 2003 Servus nochmal, also: Diese Klasse XMLReader ist scheinbar abstrakt. Deshalb kannst Du sie nicht instanzieren. Du musst also eine eigene Klasse schreiben, die von XMLReader erbt und die Methoden implementiert. Und allgemein: Jaraz sein Tip ist der einzig wahre. Buch nehmen und lernen. Und soviel anders ist es bei Java nicht (im Vergleich zu C++). Nur funktioniert das, was Du hier probiert hast, dort auch nicht. Du kannst ja die OOP-Kapitel überspringen. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 30. Oktober 2003 Teilen Geschrieben 30. Oktober 2003 Original geschrieben von korea1 ich habs jetzt aber so gelöst und es kommt kein fehler mehr. Und was ist nu der Sinn des Programms? Außer Datei umkopieren und bin drin für jeden Node ausgeben passiert irgendwie nix. :confused: Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 31. Oktober 2003 Autor Teilen Geschrieben 31. Oktober 2003 hi, also ich hab hier im betrieb ne aufgabe bekommen, die ich so schnell wie möglich lösen soll. da mir hier im betrieb keiner was zeigt und ich nicht weiter kam hab ich eben hier mal nachgefragt. wenn ich die zeit dazu habe, dann nehm ich mir auch gern ein buch in die hand und lern das zeug selbst. im moment ist das aber leider nicht der fall. das programm hat so wie es hier drin is keinen sinn, aber ich wollte auch erst mal den fehler beseitigen. die funktionalität kommt jetzt. falls der eindruck entstanden sein sollte, dass ich zu faul zum lesen bin, dann kann ich euch beruhigen, das ist nicht der fall. wenn von euch aber etwas in kürzester zeit gefordert wird und ihr keine zeit zum einarbeiten bekommt, was würdet ihr dann tun?? ich hab eben hier gepostet. mfg korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.