Jar-Archiv Classpath Variable

Status
Nicht offen für weitere Antworten.

Ziza

Mitglied
Hallo,

ich möchte ein Jar-Archiv erstellen. Das klappt soweit auch ganz gut, aber wenn ich das ausführen will, dann bekomme ich den bekannten 'NoClassDefFoundError'. Ich nehm mal an, dass das an der Class-Path Variable in meiner Manifestdatei liegt. Die sieht nämlich folgendermaßen aus:

Code:
Manifest-Version: 1.0
Main-Class: GuiCardLayout
Class-Path: D:\java_progs

Ich hab gelesen, dass man für den Klassenpfad eine .jar Variable angeben muss. Aber woher weiß ich, wie die heißt, ich finde die bei mir nicht..??

Danke für die Hilfe
Grüße Ziza
 
B

bygones

Gast
öh wie soll java die finden wenn du es nicht mal schaffst ?! *kopfkratz*
 

Ziza

Mitglied
Hi,

na ok, also das Programm startet jetzt über das .jar-Archiv :)... aber arbeitet dann nicht richtig weiter.

Meine erste GUI öffnet sich also. Hier kann man einen Tabellennamen eingeben und wenn man dann den entsprechenden Button "Tabelle erstellen" anklickt, dann soll eigentlich eine Tabelle erstellt werden. Das macht das Programm jetzt aber nicht mehr... Weiß jemand wieso? Liegt wohl irgendwie am Datenbankzugriff...

Grüße Ziza
 
B

bygones

Gast
wir können gern noch diese "Im Dunklen rumtippen" weiterspielen, nur hilfts keinem.

Was geht nicht, was meldet java für fehler, zeig code und und und... alles aus der nase rausziehen lassen macht keinem spaß
 

Ziza

Mitglied
Hallo,

ja ich krieg ja einfach gar keine Fehlermeldung.

Also, bisher hab ich mein Programm immer über eclipse gestartet, will ich aber nicht mehr.
Jetzt hab ich das .jar Archiv erstellt was ja scheinbar auch funktioniert hat, sonst würde mein programm gar nicht starten.

Na gut und wenn du Code willst, kannst schon haben, aber an sich funktioniert das Programm ja auch, halt nur wenn ichs über eclipse starte...

Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.*;

import javax.swing.*;

import java.lang.String;


public class GuiCardLayout implements ActionListener{
	
	final static String CREATETABLE = "Tabelle erstellen";
    final static String SELECTDATA = "Daten selektieren"; 
    final static String EXITPROGRAM = "Programm beenden";
    JTextField tablenameField;
    JFormattedTextField vonField;
	JTextField numberField;
    JPanel cards;    
	
	public void createLayout(Container main){	
			
		//create card 1
		
		JLabel tablenameLabel = new JLabel("Bitte geben Sie den Namen der Tabelle an:");		
		tablenameField = new JTextField();
		
		JPanel textPanel = new JPanel();		
		textPanel.setLayout(new BoxLayout(textPanel, BoxLayout.PAGE_AXIS));	
		
		textPanel.add(tablenameLabel, BorderLayout.LINE_START);
		textPanel.add(Box.createRigidArea(new Dimension(0,10)));
		textPanel.add(tablenameField, BorderLayout.LINE_START);
		 
		JButton cancelButton = new JButton ("Cancel");
		//Listen to events from the Cancel button.
		cancelButton.addActionListener(this);
		
		JButton okButton = new JButton (CREATETABLE);				
		//Listen to events from the Ok button.
	    okButton.addActionListener(this);
	    	
	    JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS));
		
	    //Add the widgets to the container.        
	    buttonPanel.add(cancelButton);
	    buttonPanel.add(Box.createRigidArea(new Dimension(5,0)));
	    buttonPanel.add(okButton);                
	            
	    JPanel card1Panel = new JPanel();
	    card1Panel.setLayout(new BoxLayout(card1Panel, BoxLayout.PAGE_AXIS));	    
	    card1Panel.add(textPanel);
	    card1Panel.add(Box.createRigidArea(new Dimension(0,10)));     
	    card1Panel.add(buttonPanel);
	    
	    
	    //create card 2	        	    			
				
		JLabel dateLabel = new JLabel("<html>Geben Sie hier bitte den Datumsbereich ein, aus dem Sie die Datensätze auswählen wollen: (Format JJJJ-MM-TT)</html>");						
		
		JLabel vonLabel = new JLabel("Von:");
		DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		vonField = new JFormattedTextField(formatter);						
				
		JPanel vonPanel = new JPanel();
		vonPanel.setLayout(new BoxLayout(vonPanel, BoxLayout.LINE_AXIS));
		
		vonPanel.add(vonLabel, BorderLayout.LINE_START);
		vonPanel.add(Box.createRigidArea(new Dimension(5,0)));
		vonPanel.add(vonField);
		
		JPanel datePanel = new JPanel();
		datePanel.setLayout(new BoxLayout(datePanel, BoxLayout.PAGE_AXIS));
		
		datePanel.add(dateLabel, BorderLayout.PAGE_START);
		datePanel.add(Box.createRigidArea(new Dimension(0,5)));
		datePanel.add(vonPanel);		
		
		JLabel numberLabel = new JLabel("Geben Sie hier die gewünschte Anzahl Datensätze an: ");		
		numberField = new JTextField();
		
		JPanel numberPanel = new JPanel();
		numberPanel.setLayout(new BoxLayout(numberPanel, BoxLayout.LINE_AXIS));
		
		numberPanel.add(numberLabel, BorderLayout.LINE_START);
		numberPanel.add(numberField);
				
		JButton cancelButton2 = new JButton ("Cancel");		
		cancelButton2.addActionListener(this);
		
		JButton okButton2 = new JButton (SELECTDATA);				
	    okButton2.addActionListener(this);
	    
		JPanel buttonPanel2 = new JPanel();		
		buttonPanel2.setLayout(new BoxLayout(buttonPanel2, BoxLayout.LINE_AXIS));					
	          
	    buttonPanel2.add(cancelButton2);
	    buttonPanel2.add(Box.createRigidArea(new Dimension(5,0)));
	    buttonPanel2.add(okButton2);                
	            
	    JPanel card2Panel = new JPanel();	    
	    card2Panel.setLayout(new BoxLayout(card2Panel, BoxLayout.PAGE_AXIS));	    	    
	    
	    card2Panel.add(datePanel);	    
	    card2Panel.add(Box.createRigidArea(new Dimension(0,10)));
	    card2Panel.add(numberPanel);
	    card2Panel.add(Box.createRigidArea(new Dimension(0,10)));
	    card2Panel.add(buttonPanel2);	    	    
	    	
	    
	    //create card 3
	    
	    JButton exitButton = new JButton(EXITPROGRAM);
	    exitButton.addActionListener(this);
	    
	    JPanel card3Panel = new JPanel();
	    card3Panel.add(new JLabel("Die Tabelle wurde erfolgreich erstellt und mit Daten befüllt!"));
	    card3Panel.add(exitButton);
	    
	    
	    //add all cardPanels
	    
	    cards = new JPanel(new CardLayout());
	    cards.add(card1Panel, CREATETABLE);
	    cards.add(card2Panel, SELECTDATA);
	    cards.add(card3Panel, EXITPROGRAM);
	    
	    main.add(cards);
	    
	}//end function createLayout
	
	
	public void selectData( int anz, String tablename){
		
		try{
			Class.forName("com.mysql.jdbc.Driver");
		}
		catch (ClassNotFoundException e)
		{	
			System.out.println("Fehler beim Zugriff auf Klasse aufgetreten:" +e);		
			return;
		}
		
		Connection con;
		Statement stmt;
		Statement stmt2;
		Statement stmt3;
		Statement stmt4;
		ResultSet rSet_sessions;
		ResultSet rSet_pages;

    	try
    	{
      		String url = "jdbc:mysql://localhost/mylocal";
      		con = DriverManager.getConnection( url, "myname", "mypwd" );
      		stmt = con.createStatement();
      		stmt2 = con.createStatement();
      		stmt3 = con.createStatement();
      		stmt4 = con.createStatement();
      		
      		String sqlselect_sessions = "select DISTINCT (session_id) from tracking_log_stefanmay where timestamp > '"+ vonField.getText() +"' LIMIT 0,"+ anz +";";
      		rSet_sessions = stmt.executeQuery( sqlselect_sessions );	  			        		
	  		
	  		int i = 0;
	  		while (rSet_sessions.next()){
	  			//System.out.println("Ich bin in der while-Schleife!!");	  			
	  			System.out.println( (i+1) + ". session_id : " + rSet_sessions.getString(1) + "\n");
	  			String sqlinsert = "insert into "+ tablename +" (session_id) values ('"+ rSet_sessions.getString(1) +"');";      			
	  			stmt2.executeUpdate(sqlinsert);
	  			
	  			String sqlinsertNull = "update "+ tablename +" SET home=0, archive_login=0, archive_photo=0, bm_calendars_2006_2=0, bm_calendars_2006_3=0 where session_id = '"+ rSet_sessions.getString(1) +"';";
				stmt4.executeUpdate(sqlinsertNull);
	  				  			
	  			String sqlselect_pages = "select distinct(ressource_id) from tracking_log_stefanmay where session_id='"+ rSet_sessions.getString(1) +"';";
	  			rSet_pages = stmt3.executeQuery(sqlselect_pages);	  				  			
	  			
	  			while (rSet_pages.next()){
	  				 					  				
	  				if (rSet_pages.getString(1).equals("home")){
	  					String sqlupdate = "update "+ tablename +" SET home=1 where session_id = '"+ rSet_sessions.getString(1) +"';";
	  					stmt2.executeUpdate(sqlupdate);
	  				}
	  				if (rSet_pages.getString(1).equals("archive_login")){
	  					String sqlupdate = "update "+ tablename +" SET archive_login=1 where session_id = '"+ rSet_sessions.getString(1) +"';";
	  					stmt2.executeUpdate(sqlupdate);
	  				}	  					  				
	  				
                          // ... usw.

	  				if (rSet_pages.getString(1).equals("bm_calendars_2006_3")){
	  					String sqlupdate = "update "+ tablename +" SET bm_calendars_nyc2006_3=1 where session_id = '"+ rSet_sessions.getString(1) +"';";
	  					stmt2.executeUpdate(sqlupdate);
	  				}	  						
	  			}//end while rSet_pages
	  			i++;
	  		}//end while rSet_sessions	  			  			  
  		
  		stmt.close();
  		stmt2.close();
  		stmt3.close();
  		stmt4.close();
  		con.close();
	
    	}//end try	    	
    	catch ( SQLException e )
    	{
      		System.out.println( "Fehler bei Tabellenabfrage" + e );
      		return;
    	}
	}//end selectData
		
	public void actionPerformed (ActionEvent event) {
		CardLayout card = (CardLayout)cards.getLayout();
		
		if ("Cancel".equals(event.getActionCommand()) | EXITPROGRAM.equals(event.getActionCommand()) ){
			
			System.exit(0);		      			
		}
		else{
			if (CREATETABLE.equals(event.getActionCommand())){				
				System.out.println("Sie haben den Knopf von Tabelle erstellen gedrückt");
				
				String tableName = tablenameField.getText();
				
				try
				{
					Class.forName("com.mysql.jdbc.Driver");
				}
				catch (ClassNotFoundException e)
				{	
					System.out.println("Fehler beim Zugriff auf Klasse aufgetreten:" +e);		
					return;
				}
				
				Connection con;
				Statement stmt;
		
		    	try
		    	{
		      		String url = "jdbc:mysql://localhost/mylocal";
		      		con = DriverManager.getConnection( url, "myname", "mypwd" );
		      		stmt = con.createStatement();				      				      		
		
		      		String sqlcreate = "create table "+ tableName +" (session_id varchar(100) PRIMARY KEY, " +
		         				"home binary(1)," +
							"newsletter_form binary(1)," +
							"bm_books_nyc binary(1)," +
							"bm_calendars_2005_1 binary(1)," +
						// und so weiter...
							"bm_calendars_2006_2 binary(1)," +
							"bm_calendars_2006_3 binary(1)" +
		      				");";			      				      		 		            		             		             		             		             		             		             		             		           		             		            		             		            		             		            
		      		 		      		
		      		stmt.executeUpdate(sqlcreate);
		      		
		      		stmt.close();
		      		con.close();		      	
		      		
		    	}//end try	    	
		    	catch ( SQLException e )
		    	{
		      		System.out.println( "Fehler bei Tabellenabfrage" + e );
		      		return;
		    	}//end catch	    	
		    	card.show(cards, SELECTDATA);
			}//end if
			else {						
				System.out.println("Sie haben den Knopf von select data gedrückt");
				
				int num = Integer.parseInt(numberField.getText());
				System.out.println("Anzahl: "+num );
				String table = tablenameField.getText();
				System.out.println("Tabellenname: "+table );
												
				selectData(num, table);	
				card.show(cards, EXITPROGRAM);
			}
		}				
		
    }//end function actionPerformed

	public static void main (String[] args) {

	      JFrame f = new JFrame("Create and Fill Table");
	      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	      f.setBounds(100, 100, 400, 200);
	      GuiCardLayout gui = new GuiCardLayout();
	      gui.createLayout(f.getContentPane());	      
	      f.setVisible(true);

	}
}

Also wenn ich das .jar starte, wird mir der erste Panel angezeigt, indem ich den Tabellennamen angeben kann. Beim Klick auf den Button passiert aber nichts weiter. Ich geh eben davon aus, dass der DB Zugriff nicht funktioniert (WAMP-Server läuft aber), verstehe aber nicht wieso...?

So ich hoffe das reicht an Informationen!
Danke und Gruß
Ziza
 

Ziza

Mitglied
Hallo,

mir ist jetzt nochwas aufgefallen.

Also ich habe das .jar Archiv erstellt. Wenn ich es über die Konsole mit 'java -jar Javaprogramm.jar' starte, dann funktioniert es auch einwandfrei. Wenn ich aber Doppelklick auf das .jar mache, dann wird zwar die Oberfläche gestartet, aber führt dann keine weiteren Aktionen durch.

Weiß vielleicht jemand woran das liegt??

Vielen Dank
Ziza
 

Ziza

Mitglied
Hallo,

hmm... gebe ich euch die falschen Informationen, oder hat wirklich niemand eine Ahnung, was
bei mir falsch sein könnte?

Nochmal zusammengefasst:

- Ich habe ein .jar - Archiv erstellt mit meinem Programm (siehe oben), das nur aus einer Klasse besteht.
- Die Manifestdatei hat folgenden Inhalt:
Code:
Manifest-Version: 1.0
Main-Class: GuiCardLayout
Class-Path: CLASSPATH.jar
- Wenn ich über die Konsole mit 'java -jar Javaprogramm.jar' starte funktioniert alles einwandfrei.
- Wenn ich die .jar-Datei aber über Doppelklick starte, dann arbeitet das Programm nicht. Der erste Panel
öffnet sich. Wenn ich auf den Button 'Tabelle erstellen' klicke, dann passiert aber nichts. Die Prozessorleistung ist
kurzzeitig sehr hoch, sinkt dann aber sofort wieder ab und dann geht nichts weiter.
- Fehlermeldung kommt aber keine.

- Java 1.5.0
- Apache version : Apache/1.3.33 (Win32)
- PHP version : 5.0.4
- MySQL version : 4.1.10a-nt - extension : mysqli

Ich hoffe, so kann jemand was damit anfangen, wenn nicht, dann sagt bitte, was ihr an Informationen braucht.

Ansonsten muss ich das Ganze halt so abgeben (ist nämlich Teil meiner Diplomarbeit). Das wäre auch nicht so schlimm,
aber wenns richtig funktionieren würde halt doch vorteilhafter :)

Vielen Dank
Grüße Ziza
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
G Jar-Archiv zum Lesen einer Konfigurationsdatei Java Basics - Anfänger-Themen 9
H Classpath VBScript in Jar-archiv ausführen Java Basics - Anfänger-Themen 2
P Input/Output String via Drag & Drop auf jar-Archiv Java Basics - Anfänger-Themen 2
H Java Archiv lässt sich nur pfadgebunden öffnen? Java Basics - Anfänger-Themen 26
A JUnit Tests in Jar-Archiv packen Java Basics - Anfänger-Themen 2
E Dateien in ein JAR-Archiv packen Java Basics - Anfänger-Themen 2
P Interpreter-Fehler jar Archiv wird nicht ausgeführt Java Basics - Anfänger-Themen 4
E Projekt als jar-Archiv speichern Java Basics - Anfänger-Themen 4
M Datei aus .jar Archiv ausführen Java Basics - Anfänger-Themen 4
R NoClassDefFoundError im *jar Archiv Java Basics - Anfänger-Themen 7
F JAR Archiv VM Argumente übergeben Java Basics - Anfänger-Themen 3
M Shellscript aus .jar archiv ausführen Java Basics - Anfänger-Themen 2
D Datei aus einem .jar Archiv aufrufen Java Basics - Anfänger-Themen 4
B jar Archiv anlegen Java Basics - Anfänger-Themen 2
N Ressourcendatei im Jar-Archiv Java Basics - Anfänger-Themen 2
C JAr Archiv erstellen Java Basics - Anfänger-Themen 7
G Applet als Jar-Archiv Java Basics - Anfänger-Themen 15
hdi bilder funktionieren im jar archiv nicht. Java Basics - Anfänger-Themen 3
G Bilder ins jar-Archiv einbinden Java Basics - Anfänger-Themen 1
O Jar-Archiv im Servlet verwenden Java Basics - Anfänger-Themen 3
G Jar archiv Pfadangabe! Java Basics - Anfänger-Themen 5
S Zip Archiv erstellen Java Basics - Anfänger-Themen 9
G leere Ordner befinden sich nicht im Zip-Archiv Java Basics - Anfänger-Themen 8
P Images im Archiv .jar Java Basics - Anfänger-Themen 9
N Datei aus Jar Archiv abspeichern Java Basics - Anfänger-Themen 2
X Datei in einem Archiv ersetzen Java Basics - Anfänger-Themen 4
M eine *.gif datei zum jar archiv hinzufügen Java Basics - Anfänger-Themen 3
O Existenz einer Datei im jar-Archiv überprüfen Java Basics - Anfänger-Themen 2
G pdf Dokument aus .jar Archiv Java Basics - Anfänger-Themen 8
S Classloader JAR Archiv Java Basics - Anfänger-Themen 3
O datei erstellen in jar archiv? Java Basics - Anfänger-Themen 4
G Jar Archiv Java Basics - Anfänger-Themen 3
H Jar-Archiv aus anderem Jar-Archiv aufrufen? Java Basics - Anfänger-Themen 3
J relativer Pfad in jar-Archiv Java Basics - Anfänger-Themen 5
G Frage zu zip-Archiv Java Basics - Anfänger-Themen 2
G Wie generiere ich zu diesem Code ein *.jar-Archiv Java Basics - Anfänger-Themen 6
S JAR Archiv erstellen? Java Basics - Anfänger-Themen 7
A Programm findet keine wav-Dateien im jar Archiv Java Basics - Anfänger-Themen 4
A JPEG mit ins JAR-Archiv Java Basics - Anfänger-Themen 3
L jar archiv Java Basics - Anfänger-Themen 5
A .class Datein, jar Archiv ? Java Basics - Anfänger-Themen 2
E ausführbares jar-archiv funktioniert nicht Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
Michi__ Modulepath und Classpath fehlen Java Basics - Anfänger-Themen 2
A CLASSPATH Java Basics - Anfänger-Themen 4
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
A Class not found - Jar liegt am classpath Java Basics - Anfänger-Themen 2
J .classpath und .project? Java Basics - Anfänger-Themen 1
M Classpath Befehl zum Kompilieren um die Option classpath erweitern. Java Basics - Anfänger-Themen 5
N Eclipse - eigene Icons unter ClassPath Resource Java Basics - Anfänger-Themen 0
C Die CLASSPATH Variable Java Basics - Anfänger-Themen 1
S Classpath: Alle .jars innerhalb eines Ordners einbinden Java Basics - Anfänger-Themen 4
S Classpath Findet die Klasse nicht classpath setzen? Java Basics - Anfänger-Themen 8
T File aus Classpath verwenden Java Basics - Anfänger-Themen 3
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
F Classpath Dateien einbinden und Classpath durchsuchen Java Basics - Anfänger-Themen 2
Q Classpath mit Text Editor progammieren (Classpath) Java Basics - Anfänger-Themen 5
B Umgebungsvariable + Classpath Java Basics - Anfänger-Themen 2
V Erste Schritte Ausführen mit cmd + Classpath Java Basics - Anfänger-Themen 13
H Classpath Eclipse? Java Basics - Anfänger-Themen 13
L Classpath anlegen Java Basics - Anfänger-Themen 6
P Classpath falscher Classpath, aber nicht immer Java Basics - Anfänger-Themen 19
H Classpath konnte nicht gefunden werden? Java Basics - Anfänger-Themen 2
C Java3d Classpath?!? Java Basics - Anfänger-Themen 11
M Classpath Jar nicht ausführbar, Classpath warscheinlich falsch Java Basics - Anfänger-Themen 10
M Classpath Java Basics - Anfänger-Themen 11
D Classpath compiler zur Laufzeit aufrufen & lib-classpath Java Basics - Anfänger-Themen 6
C Classpath Classpath in Jar Dateien Java Basics - Anfänger-Themen 15
J Classpath Java Basics - Anfänger-Themen 9
S ClassPath Java Basics - Anfänger-Themen 12
Z CLASSPATH + Packages Java Basics - Anfänger-Themen 6
J classpath Java Basics - Anfänger-Themen 10
S import - Anweisung; Setzen der Classpath Java Basics - Anfänger-Themen 2
J Frage zu jars/classpath Java Basics - Anfänger-Themen 7
K MySQL, Classpath, Java, MAC OSX Java Basics - Anfänger-Themen 3
D Classpath setzen Java Basics - Anfänger-Themen 4
J Classpath bestimmen, unter Windows 7 Java Basics - Anfänger-Themen 2
E Classpath Java Basics - Anfänger-Themen 4
B XOM...Classpath etc.??? Java Basics - Anfänger-Themen 2
L set Classpath für JDK Java Basics - Anfänger-Themen 2
L Lucene Classpath unter linux setzen Java Basics - Anfänger-Themen 8
B Classpath setzen - UNTER MAC OS X Java Basics - Anfänger-Themen 2
J classpath funktioniert nur in eclipse nicht auf der konsole?! Java Basics - Anfänger-Themen 6
P ClassPath in Ubuntu Java Basics - Anfänger-Themen 4
S dauerhafte CLASSPATH-Umgebungsvariable Java Basics - Anfänger-Themen 3
E Classpath Frage Java Basics - Anfänger-Themen 2
C Textpad, classpath, java = Probleme Java Basics - Anfänger-Themen 21
F probleme mit classpath/auslagerung von klassen Java Basics - Anfänger-Themen 5
L Classpath-Probleme Java Basics - Anfänger-Themen 2
A Classpath im manifest einbinden? Java Basics - Anfänger-Themen 3
GilbertGrape findet jar aus Classpath nicht Java Basics - Anfänger-Themen 4
Z Ant java -classpath befehl Java Basics - Anfänger-Themen 2
G Wo fnde ich den classpath, um dort z.b. eine html abzulegen? Java Basics - Anfänger-Themen 13
G Classpath Problem Java Basics - Anfänger-Themen 4
F Classpath problem Java Basics - Anfänger-Themen 2
G Classpath . zum Xten Mal Java Basics - Anfänger-Themen 16
G Plugins einbinden und Classpath setzen Java Basics - Anfänger-Themen 4
F Classpath: Wichtig für Runnable JAR? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben