# Eclipse versteht keine Generics



## Medic13th (7. Jan 2010)

Hi,
ich weiss nicht mehr weiter...
selbst bei einem Beispiel von diesem Forum bekomme ich:

*cannot be resolved to a type*

In diesem Beispiel das <*Test*>
Das gleiche Problem auch in NetBeans was zu der vermutung führt das mein System dort mitreinspuckt aber das will ich eigendlich von euch erfahren.

[JAVA=42]
public class DieHauptklasse{

  public void macheEtwas(){
     ArrayList<Test> myArrList = new ArrayList<Test>();

     myArrList.add(new Test(4));
     myArrList.get(0).setZahl(7);
  }


}

class Test
{
   private int aInt;

   public Test(int zahl){
   this.aInt = zahl;     
    } 

   public int getZahl(){
   return this.aInt;
   }

   public void setZahl(int zahl){
   this.aInt = zahl;
   }
}
[/code]

Eclipse 3.5.1   Mac OSX 10.5.8 mit SDK 6 (1.6)


----------



## ARadauer (7. Jan 2010)

Rechte Maustaste aufs Projekt -> Properties - > java Compiler... was ist da für ein compliance level eingestellt?


----------



## DerEisteeTrinker (7. Jan 2010)

viel interessanter wäre zu erfahren, welche JDK verwendet wird :rtfm:


----------



## Medic13th (7. Jan 2010)

das ist  die version J2SE 1.6
und ich habs schon mit 1.5 durchprobiert,mit und ohne Umschaltung des OSX zwischen 1.5 und 1.6
(generics gehen erst ab Java 5) deshalb hab ich auch das ganze auch mit NetBeans probiert...same shit

Ich denk die meisten von euch haben ne WindowsKiste deshalb werd ich heut Abend das ganze auf VM mit XP auf meinem Mac testen (danach auch native)
Mir wär halt lieber wenn ichs auch unter OSX zum laufen bringen könnte.


----------



## eRaaaa (7. Jan 2010)

Hey mal doof gefragt (man weiß ja nie) :  Du hast aber

```
import java.util.ArrayList;
```
in der Klasse DieHauptklasse importiert?


----------



## maki (7. Jan 2010)

Medic13th hat gesagt.:


> das ist  die version ...


Ist das die Antwort auf ARadauers Frage?
Denn diese wäre wirklich interessant 

Falls ja: Du hast noch andere Fehler im Code
Falls nein: Beantworte die Frage 

Eclipse & Netbeans können für 1.4 kompilieren selbst wenn nur ein 1.6 installiert ist.


----------



## Medic13th (7. Jan 2010)

Yap,war keine blöde Frage...sicher ist sicher falls ich doch was an der Klaschte hab

Hier ist mein Projekt wo ich gerade dran bin..
und hier kotzt er schon an dem Namen QuizKarte vom der Arraylist ab (zeile 68) Cannot be resolved to a type
Bitte ignoriert die zuvielen Importe aber ich bin immernoch am rumtesten ob ich was vergessen hab

Danke im voraus

[JAVA=42]
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;

public class QuizKartenAutor {

	private JTextArea frage;
	private JTextArea antwort;
	private ArrayList <QuizKarte> kartenListe;
	private JFrame frame;

	public static void main(String[] args) {
		QuizKartenAutor editor = new QuizKartenAutor();
		editor.los();
	}

	public void los() {
		// GUI erstellen
		frame = new JFrame("Quizkarten-Autor");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel mainPanel = new JPanel();
		Font bigFont = new Font("sanserif", Font.BOLD, 24);
		frage = new JTextArea(6, 20);
		frage.setLineWrap(true);
		frage.setWrapStyleWord(true);
		frage.setFont(bigFont);

		JScrollPane fScroller = new JScrollPane(frage);
		fScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		fScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

		antwort = new JTextArea(6, 20);
		antwort.setLineWrap(true);
		antwort.setWrapStyleWord(true);
		antwort.setFont(bigFont);

		JScrollPane aScroller = new JScrollPane(antwort);
		aScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		aScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

		JButton neachsteKarteButton = new JButton("Nächste Karte");
		kartenListe = new ArrayList<QuizKarte>();
		JLabel fLabel = new JLabel("Die Frage lautet:");
		JLabel aLabel = new JLabel("Die Antwort lautet:");

		mainPanel.add(fLabel);
		mainPanel.add(fScroller);
		mainPanel.add(aLabel);
		mainPanel.add(aScroller);
		mainPanel.add(neachsteKarteButton);
		neachsteKarteButton.addActionListener(new NaechsteKarteListener());
		JMenuBar menueleiste = new JMenuBar();
		JMenu menueDatei = new JMenu("Datei");
		JMenuItem menuePunktNeu = new JMenuItem("Neu");

		JMenuItem menuePunktSpeichern = new JMenuItem("Speichern");
		menuePunktNeu.addActionListener(new MenueNeuListener());
		menuePunktSpeichern.addActionListener(new MenueSpeichernListener());

		menueDatei.add(menuePunktNeu);
		menueDatei.add(menuePunktSpeichern);
		menueleiste.add(menueDatei);
		frame.setJMenuBar(menueleiste);

		frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
		frame.setSize(500, 600);
		frame.setVisible(true);
	}

	public class NaechsteKarteListener implements ActionListener {
		public void actionPerformed(ActionEvent ev) {
			//QuizKarte karte = new QuizKarte(frage.getText(), antwort.getText());
			kartenListe.add(new QuizKarte frage.getText(), antwort.getText());
			karteAbraeumen();

		}
	}

	public class MenueSpeichernListener implements ActionListener {
		public void actionPerformed(ActionEvent ev) {
			QuizKarte karte = new QuizKarte(frage.getText(), antwort.getText());
			kartenListe.add(karte);

			JFileChooser dateiWahl = new JFileChooser();
			dateiWahl.showSaveDialog(frame);
			dateiSpeichern(dateiWahl.getSelectedFile());
		}
	}

	public class MenueNeuListener implements ActionListener {
		public void actionPerformed(ActionEvent ev) {
			kartenListe.clear();
			karteAbraeumen();
		}
	}

	private void karteAbraeumen() {
		frage.setText("");
		antwort.setText("");
		frage.requestFocus();
	}

	private void dateiSpeichern(File datei) {

		try {
			BufferedWriter writer = new BufferedWriter(new FileWriter(datei));
			// Iterator kartenIterator = kartenListe.iterator();
			// while (kartenIterator.hasNext()) {
			// QuizKarte karte = (QuizKarte) kartenIterator.next();
			// writer.write(karte.getFrage() + "/");
			// writer.write(karte.getAntwort() + "\n");
			// } TODO: Dies war die Fassung im Internet, im Buch wurde die
			// neue foreach-Schleife verwendet:

			for (QuizKarte karte : kartenListe) {
				writer.write(karte.getFrage() + "/");
				writer.write(karte.getAntwort() + "\n");
			}
			writer.close();

		} catch (IOException ex) {
			System.out.println("konnte die kartenliste nicht schreiben");
			ex.printStackTrace();
		}

	} // Methode schlieﬂen
}
[/code]


----------



## maki (7. Jan 2010)

Dir ist klar dass die Klasse [c]QuizKarte[/c] nirgendwo deklariert wird?


----------



## DerEisteeTrinker (7. Jan 2010)

das wird im selben package liegen, von daher brauch er das nicht deklarieren


----------



## maki (7. Jan 2010)

DerEisteeTrinker hat gesagt.:


> das wird im selben package liegen, von daher brauch er das nicht deklarieren


Du meinst wohl "importieren", ich kann jedenfalls nirgendwo den Quelltext dazu finden


----------



## Medic13th (7. Jan 2010)

Der Punkt geht an den Moderator
Das Auslese Prog (QuizKartenPLayer und die Quizkarte) liegen jeweils komplett als neues Projekt im Ecplise rum....

Also nicht zusammen bzw als Package geschnürt.

Ich glaube das wars. Eine endgültige Antwort werde ich aber erst heute Abend geben können.

Der Noob verneigt sich vor euch


----------



## fastjack (7. Jan 2010)

Hast Du mal versucht mit nem aktuellen 6er Java ohne IDE (Eclipse, NetBeans etc.) zu kompilieren ?


----------



## Medic13th (8. Jan 2010)

Moin
Das Problem lag wirklich an den Klassen die ich in Eclipse erstellt hatte aber nicht zusammen im Package drin hatte.
Sprich ich hatte für meine drei Dateien jeweils ein neues Java-Projekt angelegt...
Dadurch wusste er nicht was mit QuizKarten gemeint ist (Zeile68).

Vielen Dank für die Hilfe


----------



## Tolga66 (16. Nov 2010)

Hallo Leuts, 
bei mir funktioniert der QuizkartenAutor auch nicht.
Die Klassen liegen alle in einem package, insgesammt 3 Klassen.
Habe JAVA 1.5, mit Generics hatte ich bisher kein Problem.
Ich kriege eine NullPointerException raus.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at QuizkartenAutor.QuizkartenAutor$NaechsteKarteListener.actionPerformed(QuizkartenAutor.java:121)
	at java.awt.Button.processActionEvent(Unknown Source)
	at java.awt.Button.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)



Hier der Code:

```
package QuizkartenAutor;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.FlowLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.BoxLayout;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;


public class QuizkartenAutor{
	
	private JTextArea frage;
	private JTextArea antwort;
	private Button naechsteKarte;
	private ArrayList<Quizkarte> kartenListe;
	private JFrame frame;

	
	//START
	public static void main(String[] args) {
		QuizkartenAutor autor = new QuizkartenAutor();
		autor.init();
	}
		
		
	
	
	public void init() {
		
		frame = new JFrame("Quirkarten-Autor");
		frame.setSize(300,400);
		frame.setVisible(true);
		frame.addWindowListener(new MyWindowListener());
		BorderLayout layout = new BorderLayout();
		frame.setLayout(layout);
		
		//Frage Antwort Eingabebereich
		JPanel hauptpanel = new JPanel();
		JLabel lbl1 = new JLabel("Die Frage lautet:");
		frage = new JTextArea(12,30);
		JLabel lbl2 = new JLabel("Die Antwort lautet:");
		antwort = new JTextArea(12,30);
		
		JScrollPane fScroller = new JScrollPane(frage);
		fScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		fScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		
		JScrollPane aScroller = new JScrollPane(antwort);
		aScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		aScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		
		hauptpanel.setLayout(new BoxLayout(hauptpanel,BoxLayout.Y_AXIS ));
		hauptpanel.add(lbl1);
		hauptpanel.add(fScroller);
		hauptpanel.add(lbl2);
		hauptpanel.add(aScroller);
		
		
		//Button
		JPanel buttonpanel = new JPanel();
		naechsteKarte = new Button("naechste Karte");
		
		buttonpanel.setLayout(new FlowLayout(FlowLayout.CENTER));
		buttonpanel.add(naechsteKarte);
		
		
		//Menübalken
	    JMenuBar menueleiste = new JMenuBar();
		JMenu menueDatei = new JMenu("Datei");
		JMenuItem menuePunktNeu = new JMenuItem("Neu");
		JMenuItem menuePunktSpeichern = new JMenuItem("Speichern");
		
		
		//Die ActionListener
		menuePunktNeu.addActionListener(new MenueNeuListener());
		menuePunktSpeichern.addActionListener(new MenueSpeichernListener());
		naechsteKarte.addActionListener(new NaechsteKarteListener());
		
		
		menueDatei.add(menuePunktNeu);
		menueDatei.add(menuePunktSpeichern);
		menueleiste.add(menueDatei);
		
		
		
		frame.setJMenuBar(menueleiste);
		frame.add(BorderLayout.CENTER, hauptpanel);
		frame.add(BorderLayout.SOUTH, buttonpanel);
		frame.pack();
		
		
		
		
		
	}
	
	
	public class NaechsteKarteListener implements ActionListener {
		public void actionPerformed(ActionEvent ev) {
			Quizkarte karte = new Quizkarte(frage.getText(), antwort.getText());
			kartenListe.add(karte);
			karteAbraumen();
		}
	}
	
	
	
	public class MenueSpeichernListener implements ActionListener {
		public void actionPerformed(ActionEvent ev) {
			Quizkarte karte = new Quizkarte(frage.getText(), antwort.getText());
			kartenListe.add(karte);
			
			JFileChooser dateiWahl = new JFileChooser();
			dateiWahl.showSaveDialog(frame);
			dateiSpeichern(dateiWahl.getSelectedFile());
		}
	}
	
	public class MenueNeuListener implements ActionListener {
		public void actionPerformed(ActionEvent ev) {
			kartenListe.clear();
			karteAbraumen();
		}
	}
	
	private void karteAbraumen() {
		frage.setText("");
		antwort.setText("");
		frage.requestFocus();
	}
	
	
	private void dateiSpeichern(File datei) {
		try {
			BufferedWriter writer = new BufferedWriter(new FileWriter(datei));
			
			for(Quizkarte karte:kartenListe) {
				writer.write(karte.getFrage() + "/");
				writer.write(karte.getAntwort() + "\n");
				
			}
			writer.close();
		}catch(IOException ex) {
			System.out.println("konnte in die Kartenliste nicht schreiben");
			ex.printStackTrace();
		}
	}
	
	
	
	
	
	public class MyWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent ev) {
			JFrame frame = null;
			System.out.println("Ereignis: <windowClosing>");
			frame = (JFrame) ev.getSource();
			frame.dispose();
		}
	}
	

	
	
	
}
```


----------



## SlaterB (16. Nov 2010)

die Fehlermeldung sagt dir die genaue Zeile, hier im Forum nicht ganz, bei dir hoffentlich korrekter
->
NullPointerException bei
> kartenListe.add(karte);

NullPointerException schon mal gehört?
was ist da wohl der naheliegende Gedanke? dass kartenListe null sein könne?
lohnt sich ja zu überprüfen, schneller Blick, nirgendwo wird ein Listen-Objekt zugewiesen, ist also null

Problem gelöst,
mal ehrlich, war das schwer?


----------



## the0MIKE (7. Nov 2011)

Moin,

ja ich weiß ist schon älteres Thema, aber ich hoffe das mir hier trotzdem geholfen werden kann.

Sitze jetzt auch genau vor dem gleichen Problem, das er "QuizKarte" nicht kennt, mir ist auch klar das die Klasse fehlt, aber wie ich, werdet ihr bestimmt auch die Aufgabe aus dem Buch "Java - Von Kopf bis Fuß" gemacht haben, und hier wird nichts von dieser Klasse geschrieben. Soll heißen ich wüsste laut Buch nicht was in der Klasse stehen soll...

Frage zu denn Packages, des sind ja z.B. in Eclipse nur Ordner in dem ein Projekt mit all seinen Klassen ect. drin liegt oder? Benutze grad Notepad ++ und da brauch ich das ja dann nicht  war nur verwundert.

Aber wie gesagt WO KOMMT DIE KLASSE "QuizKarten" her?

Schöne grüße

MIKE


----------



## SlaterB (7. Nov 2011)

da es die Seite 450 des Lehrbuchs ist, darf wohl verlangt werden, dass diese Klasse selber programmiert wird,
zwei einfach String-Attribute, Konstruktor, getter, setter, 
wenn das nicht zu schaffen ist dann ist das zugehörige Kapitel sowieso nicht empfehlenswert..


----------



## the0MIKE (7. Nov 2011)

Na klar ist das zu schaffen  
Nur hätte man eine kleine Anmerkung machen könne, da ich bei solchen Büchern nie weiß ob die Klasse noch kommt oder wie in dem Beispiel, sie selbst erstellt werden muss. Naja aber dann ist es kein act  

Danke dir


----------



## the0MIKE (7. Nov 2011)

Ähm ja  grad gesehen auf Seite 448 Steht sogar das man sie selbst machen soll  also Schande über mein Haupt ...
war schon bissl her als ich das gelesen hab ^^

nur falls einer auch das "überlesen" hat


----------

