java.lang.ClassCastException

Status
Nicht offen für weitere Antworten.

weljo

Bekanntes Mitglied
hab diese Exception:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Container cannot be cast to Combo

... in der zeile:

Java:
if(MainFrame.table.getValueAt(MainFrame.table.getSelectedRow(), e.getColumn()).toString()
  .compareTo(MainFrame.combos.elementAt(v).getName().toString()) == 0)

Container und Combo sind 2 eigene klassen welche nur ein paar daten beinhalten(containerklassen)

mach ja eigentlich nur ein compareTo(...), meiner meinung nach sind ja nicht einmal die toString() nötig aber wollt auf nummer sicher gehn

sieht da jemand einen fehler bin schon fast am verzweifeln
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
zunächst musst du herausfinden, wo die Exception auftritt, ob innnerhalb von compareTo oder bei einem Cast in elementAt(v),
in der geposteten Zeile jedenfalls nicht,

wie jedem würde auch dir dennoch hoffentlich helfen, aus einem Unfall sauberen Code zu machen:
Typ a = ..;
Typ b = ..;
if (a.compareTo(b)) {
..
}

schon kann man sogar ein bisschen Struktur erkennen


edit:
also was genau ist MainFrame.combos?
ein generischer Container? bitte dessen Definition posten und alle Stellen prüfen, an denen dort etwas eingefügt wird
 
Zuletzt bearbeitet von einem Moderator:

weljo

Bekanntes Mitglied
ok der fehler liegt in meinem fall im b teil ... poste jetzt mal alles relevante villeicht hab ich ja einen groben denkfehler

ok ich habe eine JTable in der die erste spalte eine Combobox als editor beinhaltet. Eine Reihe ergibt immer einen Datensatz welcher aus verschiedenen kombinationen zusammengesetzt sein kann. die kombinationen speichere ich bei beenden des programms. ist die kombination bereits vorhanden erhöhe ich eine variable, welche mitzählt wie oft die kombination verwendet wurde. Vor dem speichern sortiere ich die Kombinationen noch nach dem wie oft sie verwendet wurden.

Java:
boolean got = false;
			int id;
			for(int r=0; r<container.size(); r++)
			{
				Container cont = container.elementAt(r);
				id = 0;
				while(got==false || id!=combos.size())
				{// sucht bis eine übereinstimmung gefunden wurde
					Combo combo = combos.elementAt(id);
					if(cont.getName().compareTo(combo.getName())==0 &&
 cont.getTemp().compareTo(combo.getTemp())==0 &&
 cont.getTime().compareTo(combo.getTime())==0 &&
 cont.getDilution().compareTo(combo.getDilution())==0)
// datensatz vergleichen vergleichen
					{
						combo.setCounter(combo.getCounter()+1);
						got = true;
					}
				}
				if(!got)//wenn die kombination nicht vorhanden ist erzeuge ich einen neuen eintrag
				{
					combos.add(new Combo(cont.getName(),cont.getTemp(),
cont.getTime(),cont.getDilution()));//neuen datensatz anlegen
				}
			}
			//combos sortieren nach count
				for (int i = 0; i < (combos.size()-1); i++) {
					for (int j = i+1; j < combos.size(); j++) {
						if (combos.elementAt(i).getCounter() > combos.elementAt(j).getCounter()) {
							Combo tmp;
							tmp = combos.elementAt(i);
							combos.set(i, combos.elementAt(j));
							combos.set(j, tmp);
						}//end if
					}//end for (j...)
				}//end for (i...)

			save();

ok ... soweit so gut ... natürlich lade ich diese daten auch wieder sobald ich das programm starte und wenn jetzt jemand eine Combobox ändet sollten sich in der Reiher der Tabelle auch die anderen daten auf die meist gewählte kombination anpassen, was ich so gelöst habe

Java:
private class MyTableModelListener implements TableModelListener
		{
        	boolean found;
    		int v;
    		int selectedrow = -1;
    		String selecteditem;
    		Container selectedcell;
    		
		    public void tableChanged(TableModelEvent e)
		    {	    		
		        found = false;
		        v=0;		    	
		        selectedrow = MainFrame.table.getSelectedRow();
		        selectedcell = MainFrame.container.elementAt(selectedrow);
				selecteditem = MainFrame.table.getValueAt(MainFrame.table.getSelectedRow(), e.getColumn()).toString();				

				    	switch(e.getColumn())
				    	{
				    		case 0:	selectedcell.setName(selecteditem);
						    		while(!found)// sucht die meistgewählten zusatzinfos
						    		{
						    									    			if(v<MainFrame.combos.size())
						    			{						    			Combo combo = MainFrame.combos.elementAt(v);

						    				String b = combo.getName().toString();
						    				if(selecteditem.compareTo(b) == 0)
						    				{
						    					selectedcell.setTemp(combo.getTemp().toString());
						    					selectedcell.setTime(combo.getTime().toString());
						    					selectedcell.setDilution(combo.getDilution().toString());
						    					found=true;
						    				}
						    				else
						    				{
						    					v++;
						    				}
						    			}
						    			else
						    			{
						    				found = true;
						    			}							
						    		}
				    				break;
				    		case 1:	selectedcell.setTemp(selecteditem);	
			    					break;
				    		case 2:	selectedcell.setTime(selecteditem);
			    					break;
				    		case 3:	selectedcell.setDilution(selecteditem);
	    							break;
	    					case 4:	selectedcell.setInfo(selecteditem);
	    							break;
			    			default:System.out.println("???");break;
			    		}
		     }
		}

bekomm jedoch immer meine exception wie oben beschrieben bei

Java:
Combo combo = MainFrame.combos.elementAt(v);
 
Zuletzt bearbeitet:
S

SlaterB

Gast
du kürzt immer noch nicht genug ab ;)

in MyTableModelListener steht 7x
> MainFrame.container.elementAt(selectedrow)

wenn du da vorher eine Variable selCon definieren würdest..,
immerhin hast du schon eine Variable selectedrow,
sonst würde da 7x MainFrame.container.elementAt(MainFrame.table.getSelectedRow())
stehen..

--------

if(container.elementAt(r).getName().compareTo(combos.elementAt(id).getName())==0 &&
container.elementAt(r).getTemp().compareTo(combos.elementAt(id).getTemp())==0 &&
container.elementAt(r).getTime().compareTo(combos.elementAt(id).getTime())==0 &&
container.elementAt(r).getDilution().compareTo(combos.elementAt(id).getDilution())==0)

liest sich ähnlich schlimm, das könnte

con = ..;
combo = ..;
if(con.getName().compareTo(comb.getName())==0 &&
...
lauten

---------

zum Thema sehe ich persönlich kaum Fortschritte,
die Definition von combos fehlt weiterhin
 
S

SlaterB

Gast
das war nur nebenbei angemerkt, ist wie gesagt für die Frage weniger entscheidend,

zum dritten und letzten Mal:
was ist combos? welche Klasse, welcher generischer Parameter, falls vorhanden?
 

weljo

Bekanntes Mitglied
combos ist ein Vector<Combo> in dem die jeweiligen kombinationen(alias datensatz alias zeile) wie oben geschrieben gespeichert werden

Combo ist lediglich eine containerklasse

Java:
import java.io.Serializable;


public class Combo implements Serializable
{	
	String name;
	String temp;
	String time ;
	String dilution;
	long counter =0;
	
	public Combo(String name, String temp, String time, String dilution) {
		super();
		this.name = name;
		this.temp = temp;
		this.time = time;
		this.dilution = dilution;
	}

	public String getName() {
		return name;
	}

	public String getTemp() {
		return temp;
	}

	public String getTime() {
		return time;
	}

	public String getDilution() {
		return dilution;
	}

	public long getCounter() {
		return counter;
	}

	public void setCounter(long conter) {
		this.counter = counter;
	}
}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
gut, also das Problem ist, dass irgendwie ein Container-Objekt in den Vector hineingekommen ist,
bei generischer Typprüfung sollte das gar nicht möglich sein, wenn aber der Vector noch in einer anderen Variablen steckt, dann geht das,

ich mag nun gar nicht vermuten, was alles in deinem Programm denkbar ist,
eine Variante zur Lösung wäre, alle add-Methoden des Vectors testweise zu überschreiben und die eingefügten Elemente zu testen:

Java:
public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        Vector v = new Vector()
            {
                public synchronized boolean add(Object o)
                {
                    if (!Combo.class.isInstance(o))
                    {
                        new Error("kein Combo: " + o.getClass()).printStackTrace();
                    }
                    return super.add(o);
                }

                public synchronized Object set(int index, Object o)
                {
                    if (!Combo.class.isInstance(o))
                    {
                        new Error("kein Combo: " + o.getClass()).printStackTrace();
                    }
                    return super.set(index, o);
                }

                public synchronized void setElementAt(Object o, int index)
                {
                    if (!Combo.class.isInstance(o))
                    {
                        new Error("kein Combo: " + o.getClass()).printStackTrace();
                    }
                    super.setElementAt(o, index);
                }

            };
        Vector<Combo> vc = v;

        vc.add(new Combo());
        vc.set(0, new Combo());

        v.add(new Container()); // Zeile 47

        Combo c = vc.get(1);
        System.out.println(c);
    }
}
class Combo
{
}
class Container
{
}
Code:
java.lang.Error:  kein Combo: class test.Container
	at test.Test$1.add(Test.java:18)
	at test.Test.main(Test.java:47)
Exception in thread "main" java.lang.ClassCastException: test.Container cannot be cast to test.Combo
	at test.Test.main(Test.java:49)
die ClassCastException ist in etwa das was du siehst,
aber der Error kommt von einer der add-Methoden und zeigt genau die Stelle im Code an, die das falsche Objekt einfügt (Zeile 47)

versuche mal, statt deines Vectors die überschriebene Klasse einzusetzen
 

weljo

Bekanntes Mitglied
ok es funktioniert jetzt .... der fehler lag nicht am code sondern an der datei die ich geladen hab ... die hatte noch von einer alten version einen falschen inhalt und ich hab aus versehn noch von der alten datei geladen jedoch bereits in eine neue gespeichert ... mein fehler aber thx für die bemühungen(jetzt sieht zumindest mein code etwas schöner aus)
 

Ollek

Bekanntes Mitglied
Ich erhalte ebenfalls eine ClassCastException und zwar diese:

Java:
Uncaught error fetching image:
java.lang.ClassCastException: [I cannot be cast to [B
	at java.awt.image.ColorModel.getAlpha(Unknown Source)
	at java.awt.image.ColorModel.getRGB(Unknown Source)
	at sun.awt.image.ImageRepresentation.convertToRGB(Unknown Source)
	at sun.awt.image.ImageRepresentation.setPixels(Unknown Source)
	at java.awt.image.AreaAveragingScaleFilter.accumPixels(Unknown Source)
	at java.awt.image.AreaAveragingScaleFilter.setPixels(Unknown Source)
	at sun.awt.image.ImageDecoder.setPixels(Unknown Source)
	at sun.awt.image.JPEGImageDecoder.sendPixels(Unknown Source)
	at sun.awt.image.JPEGImageDecoder.readImage(Native Method)
	at sun.awt.image.JPEGImageDecoder.produceImage(Unknown Source)
	at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
	at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
	at sun.awt.image.ImageFetcher.run(Unknown Source)

Ich lade eine Blob Datei in ein ByteArray, über dieses ByteArray erstelle ich ein ImageIcon. Von dem ImageIcon hole ich mit mir getImage() das Image um dieses anzuzeigen.
Habe schon einige Try und Catch Blöcke eingebaut, aber keiner war richtig positioniert und hat diese Exception abgefangen. Eventuell könnt ihr mir dort ja helfen, ich komme nicht weiter...

Hier mal die Sourcen.
Java:
public class ArticleImage extends JPanel implements Observer {

private Image scaledImage = null;
private Article article = null;
private Image defaultImage = null;
private BufferedImage bufferedImage;

public ArticleImage(){
		super();
		init();
		ArticleManagement.getInstance().addObserver(this);
		
		defaultImage = createImageIcon("/icons/defaultArtImg.jpg").getImage();
}

@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawImage(scaledImage, 0, 0, this);
	}

@Override
	public void update(Observable arg0, Object arg1) {
		article = (Article) arg1;
		
		// wenn kein Image auf der Datenbank verfügbar ist, wird das Default Image angezeigt
		if(article.getImageBytes() != null){
			try{
				ImageIcon imageIcon = new ImageIcon(article.getImageBytes());
				scaledImage = scaledImage(imageIcon.getImage());
			}catch (ClassCastException e){
				System.out.println("Probleme beim Casten");
				e.printStackTrace();
			}
		}else
			scaledImage = defaultImage;
		repaint();
}

/**
	 * Skaliert das Bild in die Größe
	 * 300 * 225 Pixel.
	 * 
	 * @param Image - Bilddatei zum skalieren
	 * @return - skalierte Bilddatei
	 */
	public Image scaledImage(Image image){
		try{
			scaledImage = image.getScaledInstance(300, 225, Image.SCALE_SMOOTH);	
		}catch (ClassCastException e){
			System.out.println("Probleme beim Skalieren");
			e.printStackTrace();
		}
		return scaledImage;
}

/** Gibt ein ImageIcon oder null wenn das 
	 * Verzeichnis nicht verfügabr ist zurück.
	 */
	protected static ImageIcon createImageIcon(String path) {
	    URL imgURL = ArticleImage.class.getResource(path); 
	    if (imgURL != null) {
	        return new ImageIcon(imgURL);
	    } else {
	        System.err.println("Konnte Datei im Verzeichnis nicht finden: " + path);
	        return null;
	    }
}

}

Das ist mein ImagePanel, woanders benutze ich kein Image...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T java.lang.ClassCastException: Allgemeine Java-Themen 4
C java.lang.ClassCastException Allgemeine Java-Themen 3
T java.lang.ClassCastException Allgemeine Java-Themen 7
G java.lang.ClassCastException Allgemeine Java-Themen 3
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
J Threads - java.lang.IllegalThreadStateException Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
T Eclipse Dll einbinden java.lang.UnsatisfiedLinkError nur in Eclipse nicht via javac Allgemeine Java-Themen 1
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
Crooda Compiler-Fehler java.lang.NoClassDefFoundError bitcoinj Allgemeine Java-Themen 1
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
S java.lang.NoClassDefFoundError Allgemeine Java-Themen 5
J Compiler-Fehler java.lang.StringIndexOutOfBoundsException Allgemeine Java-Themen 12
D java.lang.TypeNotPresentException Allgemeine Java-Themen 3
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
L java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 10
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
H java.lang.OutOfMemoryError bei der wiederholten Erzeugng von Threads Allgemeine Java-Themen 8
B Variable class in java.lang.Object Allgemeine Java-Themen 11
N java.lang.IllegalMonitorStateException: object not locked by thread before notify() Allgemeine Java-Themen 2
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
T java.lang.AssertionError: Allgemeine Java-Themen 4
P Java Probleme - java.lang.Thread.run(Unkown Source) Allgemeine Java-Themen 10
B java.lang.UnsupportedClassVersionError Allgemeine Java-Themen 12
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
B JNI - java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 21
E Interpreter-Fehler java.lang.ExceptionInInitializerError Allgemeine Java-Themen 12
P Fehler beim Programmstart: java.lang.NoClassDefFound Allgemeine Java-Themen 12
B Java - java.lang Allgemeine Java-Themen 12
sylo java.lang.NoSuchMethodError: Obwohl Methode vorhanden Allgemeine Java-Themen 8
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
H Applet java.lang.reflect.InvocationTargetException Allgemeine Java-Themen 9
M SerialPort RS232 : java.lang.NoSuchFieldError: eis Allgemeine Java-Themen 2
U java.lang.ClassNotFoundException: .jar Allgemeine Java-Themen 8
G NoClassDefFoundError: java/lang/Object Allgemeine Java-Themen 4
N Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.p Allgemeine Java-Themen 4
N java.lang.InstantiationException Allgemeine Java-Themen 10
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
D replaceAll => no such java.lang.NoSuchMethodError Allgemeine Java-Themen 5
G java.lang.LinkageError: loader constraints violation. Allgemeine Java-Themen 3
O java.lang.NumberFormatException für normalen integer Allgemeine Java-Themen 4
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
Y java.lang.UnsupportedClassVersionError: Allgemeine Java-Themen 5
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
E java.lang.outofmemory über windows-cmd ändern Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
I java.lang.UnsatisfiedLinkError: Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 26
J java.lang.StackOverflowError Debugging? Allgemeine Java-Themen 51
D java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 5
S Fortran Funktion mit JNI aufrufen: java.lang.UnsatisfiedLink Allgemeine Java-Themen 2
S java.lang.UnsatisfiedLinkError mit JNI Allgemeine Java-Themen 6
reibi java.lang.Class - Resource - Solaris Allgemeine Java-Themen 17
S Exception in Thread "main" java.lang.NoClassDef. b Allgemeine Java-Themen 2
M java.lang.UnsupportedClassVersionError: Bad version number i Allgemeine Java-Themen 5
J java Thread java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 7
O "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBounds Allgemeine Java-Themen 6
B Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 12
G Error: java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 2
S java.lang.OutOfMemoryError: Java Allgemeine Java-Themen 22
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
E Java Fehlermeldung java.lang.NoClassDefFoundError Allgemeine Java-Themen 3
G Problem mit java.lang.reflect.Field Allgemeine Java-Themen 15
P Kompilerfehler: at java.lang.ClassLoader.loadClassInternal(U Allgemeine Java-Themen 16
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
H java.lang.ExceptionInInitializerError Allgemeine Java-Themen 7
D java.lang.IllegalMonitorStateException: current thread not Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 15
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
T Profifrage: java.lang.StackOverflowError bei BigInteger Allgemeine Java-Themen 27
M java.lang.OutOfMemoryError Allgemeine Java-Themen 2
W java.lang.ClassNotFoundException Allgemeine Java-Themen 10
F java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 22
B Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 5
S fehlermeldung java.lang.OutOfMemoryError Allgemeine Java-Themen 5
B java.lang.NullPointerException Allgemeine Java-Themen 11
S Exception in thread "main" java.lang.StringIndexOu Allgemeine Java-Themen 9
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
J java.lang.ArrayIndexOutOfBoundsException Allgemeine Java-Themen 2
P Hilfe zu java.lang.Object Allgemeine Java-Themen 3
K java.lang.reflect - Getter und Setter ermitteln Allgemeine Java-Themen 8
G jTable-Problem --> java.lang.OutOfMemoryError Allgemeine Java-Themen 5
G Java.lang.Compiler Allgemeine Java-Themen 3
E Exception in Thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 5
F java.lang.OutOfMemoryError Allgemeine Java-Themen 13
R java.lang.String maximale Anzahl der Zeichen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben