Fatal execption occurred

The Black Hand

Grünschnabel
Hi Leute, ich hoffe ihr könnt mir helfen.
Ich arbeite mit BlueJ und hab mir eine Jar-Archiv von ihm aus meine Programm erstellt, damit ich eine Anwendungdatei habe. Leider kann ich diese nicht starten da folgender Fehler kommt :( :

Java Virtual Machine Launcher:

Fatal execption occurred. Program will exit.

Hab bei Kollegen gefragt und im Internet gesucht, bisherige Fehlerursachen waren angeblich:

nicht richtiger Pfad der Anwendung
Java updaten/neuinstallieren

naja bisher hat nichts geklappt.
Aus der Fehlermeldung werde ich auch nicht schau. :confused:

Bitte um Hilfe und im vorraus schon danke.
Mfg The Black Hand
 
Hallo,

um dir helfen zu können, mußt du uns schon mehr Informationen geben.
Die komplette Fehlermeldung wäre mal ein guter Anfang.

MfG
hansmueller
 
Ja leider gibt es keine Fehler Ausgabe in der Konsole beim compelieren, sonder nur
wenn ich schon die Datei erstellt habe und diese starten will.

Unbenannt.png

MfG The Black Hand
 
Hi.
Ja leider gibt es keine Fehler Ausgabe in der Konsole beim compelieren, sonder nur
wenn ich schon die Datei erstellt habe und diese starten will.
Starte das .jar auf der Konsole und schau dir die Meldungen an (und poste sie hier).

Code:
java -jar deinJar.jar
Vermutlich hast du vergessen eine Bibliothek ins Jar oder den Classpath zu packen und du bekommst eine ClassNotFound Exception.

Gruß
 
Ah vielen danke, jetzte weis ich wie ich die Konsole dafür benutzte.

Er sagt mit:

Execption in thread "main" java.lang.NoSuchMethodError: main

Leider kann ich damit nicht viel anfangen, das ist ja meine Main Methode(die einzige Methode).
Ich kann gerne Noch mal den Quelltext posten aber der ist, so weit ich sehe richtig:

Code:
// Import der nötigen Bibliotheken
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.JComponent.*;
import java.util.Random;

// Vererbung und Installation eines Interface
public class Alphabetisierung extends  JFrame implements ActionListener

{
// Komponenten und Instanzvariablen

    JFrame fenster = new JFrame("Alphabetisierung");
 // Komponenten
   JLabel eingabeText       = new JLabel("Wirklicher Text:");
   JTextField eingabeFeld   = new JTextField(10);
   JLabel skill             = new JLabel("Sprachfähigkeit");
   JTextField skillfeld     = new JTextField(3);
   JLabel percent           = new JLabel("%");
   JButton codeButton       = new JButton("kodieren");
   JButton loeschButton     = new JButton("löschen");
   JLabel ausgabeText       = new JLabel("Dargestellter Text:");
   JTextField ausgabeFeld   = new JTextField(10);
   
   
 // Instanzvariablen   
   String klartext;
   String codetext;
   int getskill = 0;
   
    public Alphabetisierung()
   {
     super("Alphabetisierung");
    JPanel Inhalt = new JPanel();                                       // Anlegen eines neuen Panels im Fenster       
            
     setContentPane(Inhalt);
     fenster.setContentPane(Inhalt);
     fenster.setLayout(null);                                            // Das Layout von fenster wird "null" gesetzt (kein Layout)
     fenster.setSize(400, 200);                                          // Einstellung der Fenstergröße auf 800x600
     fenster.setResizable(false);                                        // Fenstergröße nicht mehr veränderbar
     
     eingabeText.setBounds(10,10,100,20);
     Inhalt.add(eingabeText); 
     eingabeFeld.setBounds(10,40,360,20);
     Inhalt.add(eingabeFeld);
     
     skill.setBounds(10,70,100,20);
     Inhalt.add(skill);
     skillfeld.setBounds(105,70,40,20);
     Inhalt.add(skillfeld);
     percent.setBounds(146,70,9,20);
     Inhalt.add(percent);
     
     
     codeButton.setBounds(160,70,90,20);
     Inhalt.add(codeButton);
     
     loeschButton.setBounds(260,70,90,20);
     Inhalt.add(loeschButton);
     
     ausgabeText.setBounds(10,100,120,20);
     Inhalt.add(ausgabeText);
     
     ausgabeFeld.setBounds(10,125,360,20);
     Inhalt.add(ausgabeFeld);
     
     codeButton.addActionListener(this);
     loeschButton.addActionListener(this);

     WindowListener listener = new WindowAdapter()                          // WindowListener überprüft Aktionen eines Fensters (zB. schließen)
     {
        public void windowClosing(WindowEvent we)
        {System.exit(0);}
    };
    fenster.addWindowListener(listener);                                   // fenster zum windowListener hinzufügen
    fenster.setVisible(true);                                              // fenster sichtbar machen
    }

// interface Button-Listener   
public void actionPerformed(ActionEvent ae)
{
  Object eventQuelle = ae.getSource();
  if (eventQuelle == codeButton)
  {     code();     }
 
  if (eventQuelle == loeschButton)
  {
    eingabeFeld.setText("");
    ausgabeFeld.setText("");
    skillfeld.setText("");
  }
}

public void code()
{
      int[] mark={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
      klartext = eingabeFeld.getText();
      ausgabeFeld.setText("");         // Ausgabefeld leeren
      
      if(eingabeFeld.getText()=="")
      {System.out.println("Bitte im Eingabefeld ein Wort/Satz eingeben.");
          return;
        }
            if(skillfeld.getText()=="")
      {System.out.println("Bitte im Sprachfähigkeitsfeld eine Zahl von 1 bis 100 eingeben.");
          return;
        }
        
        
      getskill = 0;
      getskill = Integer.parseInt(skillfeld.getText());     // getskill auf dem Feld hollen
      if(getskill>100){getskill = 100;}
      if(getskill<0){getskill = 0;}
      
      int temp;
      char[] chars = klartext.toCharArray();
      
      getskill=((getskill*chars.length)/100);      // Anzahl der Orginal übrig bleibenden Zeichen
      int count=0;
      
      for(int i=0;i<1000;i++)                       // Zeichen markieren, die nicht verändert werden sollen
      {
          if(getskill !=0)
          {
              Random zufall = new Random();
              temp = (zufall.nextInt(chars.length));
              if(mark[temp]==1)
              {
                  //nichts
              }
              if(mark[temp]==0){mark[temp]=1; getskill = getskill -1;}
            }
          if(getskill ==0){i=1000;}
      }
      
      for (int i = 0; i< chars.length;i++)          // alle unmarkierten Zeichen werden durch zufällige neue Ersetzt
      {   
          Random zufall = new Random();
          temp = (zufall.nextInt(300))+1;       // 26 ; A = 65
          if(mark[i]==1)
          {
              //nichts
          }
          if(mark[i]==0)
          {
              if ((char)((int)chars[i])<65)
              {}
              else
              chars[i]= (char)( (((int)chars[i] + temp) % 26)+65);
              
          }  
      }
      codetext = new String(chars);
      ausgabeFeld.setText(codetext);
}
     public void main(String[] args) {new Alphabetisierung();}
}

Danke nochmals für die Hilfe, ich weis echt nicht woran es liegt.
MfG The Black Hand
 
Zuletzt bearbeitet:
Das Problem ist folgendes:
Die main-Funktion muss statisch sein, sonst kann sie nicht aufgerufen werden, also:
public static void main(String[] args)...
 
Moin,

stimmt - die Formatierung ist wirklich böse .....

Ein Blick in die API (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NoSuchMethodError.html) verrät:
Thrown if an application tries to call a specified method of a class (either static or instance), and that class no longer has a definition of that method.
Normally, this error is caught by the compiler; this error can only occur at run time if the definition of a class has incompatibly changed.

Versuch' mal die MAIN so zu deklarieren:
public static void main(String[] args) {...}

Gruß
Klaus
 
Zurück