---
title: 'Wie heißt die Klasse mit der Methode main()?'
url: 'https://tutego.de/blog/javainsel/2013/09/wie-heit-die-klasse-mit-der-methode-main'
markdown: 'https://tutego.de/blog/javainsel/2013/09/wie-heit-die-klasse-mit-der-methode-main.md'
date: '2013-09-22'
description: 'In C(++) ist das erste Element des Felds der Funktion main(int argc, char **argv) der Name des Programms. Das ist in Java anders. Die Methode enthält als ersten Parameter nicht den Namen der Klasse beziehungsweise des Programms, sondern einfach den ersten Parameter – sofern einer auf der Kommandoze…'
taxonomy:
  category:
    - Allgemein
---

# Wie heißt die Klasse mit der Methode main()?

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Wie heißt die Klasse mit der Methode main()?

22.09.2013 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

In C(++) ist das erste Element des Felds der Funktion main(int argc, char \*\*argv) der Name des Programms. Das ist in Java anders. Die Methode enthält als ersten Parameter nicht den Namen der Klasse beziehungsweise des Programms, sondern einfach den ersten Parameter – sofern einer auf der Kommandozeile übergeben wurde. Auf einem kleinen Umweg ist das auch für manche Klassen möglich.

Der zu einer Klasse gehörende Klassenlader lässt sich mit dem `Class`-Objekt erfragen. Mit der Methode `getResource()` erhalten wir von einem Klassennamen ein `URL`-Objekt zurück, das (unter gewissen Voraussetzungen) die Position der Klassendatei im Dateisystem anzeigt. Das folgende Programmbeispiel zeigt, wie wir von einer Klasse den vollständigen Dateipfad zurückbekommen.

```java
package com.tutego.insel.lang;

import java.net.*;

public class FindClassLocation
{
 static String findLocation( Class clazz )
 {
  ClassLoader loader = clazz.getClassLoader();

  if ( loader == null )
   return null;

  URL url = loader.getResource( clazz.getName().replace('.', '/' ) + ".class" );

  return ( url != null ) ? url.toString() : null;
 }

 public static void main( String[] args ) throws Exception
 {
  Class c = Class.forName( "com.tutego.insel.lang.FindClassLocation" );

  System.out.println( "Class: " + c.getName() );
  System.out.println( "Filename: " + findLocation(c) );
 }
}
```

Unter meinem Dateisystem liefert das Programm die Ausgabe:

```text
Class: com.tutego.insel.lang.FindClassLocation
Filename: file:/S:/Insel/programme/09_Funktionsbibliothek/com/tutego/insel/lang/FindClassLocation.class
```

**Achtung!** Die Lösung funktioniert natürlich nur unter gewissen Voraussetzungen. Es geht nur für Klassen, die in kein Jar-Archiv eingebunden sind und nicht den Standardbibliotheken entstammen. Auch ist eine Dateiangabe unmöglich, wenn wir etwa einen eigenen Klassenlader schreiben, der die Klassen aus einer Datenbank bezieht; dann gibt es keinen Pfad mehr.

#### `getResourceAsStream()`

Benötigen wir den Ort einer Klasse, um mit dieser Information auf weitere Dateien im Verzeichnis zuzugreifen, geht es mit der `Class.getResourceAsStream(String)` einfacher. Diese Methode dient insbesondere dazu, Ressourcen wie Bilder oder Musik aus einem Jar-Archiv auszulesen. Auch der ClassLoader bietet die Methode `getResourceAsStream(String)` an. Diese Methoden funktionieren ebenfalls für Klassen aus Jar-Archiven, wenn die Ressource im Archiv liegt.

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Durch Null-Cursor Flackern des Mauszeigers bei Animationen vermeiden](https://tutego.de/blog/javainsel/2013/09/durch-null-cursor-flackern-des-mauszeigers-bei-animationen-vermeiden.md)
- Next: [Parametersammlungen im Servlet mit getParameterValues() auslesen](https://tutego.de/blog/javainsel/2013/09/parametersammlungen-im-servlet-mit-getparametervalues-auslesen.md)
