# Kann mein Programm nicht ausführen(NetBeans 5)



## swerflash (13. Mrz 2006)

Hallo,

wie starte ich ein Programm, dass ich programmiert habe im Matisse GUI Builder(NetBeans 5.0)

Ich habe JFrame und dort habe ich 1 JButton und 1JTextfield. Und jetzt will ich das Programm starten und mir mein Ergebnis anschauen. Ich klicke mein JFrame mit der Maus und und gehe dann oben im Menu auf RUN und dann auf Test "erstesProgramm".  Dann macht er schnell irgendwas und gibt mir in der Konsole "JUnit results root node" aus und startet mein Programm nicht. Was mache ich falsch, wie kann ich mein Programm starten?
Ich kenne mich mit NetBeans noch nicht aus.


Danke im Voraus


PS: wenn ich auf OUTPUT unten klicke dann steht dort:

init:
deps-jar:
compile:
compile-test:
test-report:
test:
BUILD SUCCESSFUL (total time: 0 seconds)



also keine Fehler, nur sehe ich nichts.


----------



## norman (13. Mrz 2006)

was soll dein programm denn machen? evtl. siehst du es nur nicht?


----------



## bronks (13. Mrz 2006)

Hast Du bei den ProjectProperties die richtige MainClass eingetragen?


----------



## L-ectron-X (13. Mrz 2006)

NetBeans Tutorial - Running Projects and Files hat gesagt.:
			
		

> To run a project, package, or file, select it in the Projects window and choose one of the following:
> -In the main menu, choose Run > Run Main Project (F6) to run the main project. Alternately, you can use the Run main project button in the toolbar.
> -In the Projects window, right-click the project and choose Run Project to run a project.
> -In the Projects window, right-click the file and choose Run File (Shift+F6) to run a file. Alternatively, choose Run > Run File > Run filename (Shift+F6) in the main menu. Note that if you are using a free-form project, this command is disabled by default. You have to write an Ant target for running the currently selected file in the IDE and map it to the Run File command.


http://www.netbeans.org/kb/50/using-netbeans/deploy.html#pgfId-1156875


----------



## swerflash (14. Mrz 2006)

Danke Dir, hat geklappt, ich habe Main.java und NewJFrame.java und ich habe immer versucht Main.java zu starten und habe mich gewundert warum ich kein JFrame sehe, also mein Programm.

Noch eine Frage, wie kann ich das Programm abspeichern, damit das Programm jemand ausführen kann, der kein NetBeans hat, also nur JFrame. Im Visual Studio C++ konnte man ein Programm im Format .exe abspeichern bzw hat es selber schon gemacht und wie geht das mit NetBeans?

Danke im Voraus.


----------



## L-ectron-X (14. Mrz 2006)

NetBeans kann von sich aus keine exe-Datei erzeugen. Vielleicht ist es möglich mit Einbindung eines native code compilers in Ant.

Im Normalfall werden in Java jar-Dateien erzeugt, die aber ähnliche Eigenschaften wie eine exe-Datei haben, sie lassen sich also per Mausklick starten. Voraussetzung dafür ist eine kompatible JRE auf dem Zielrechner.

jar-Dateien kannst du mit NetBeans erzeugen.
Du kannst auch mal einen Blick in die FAQ werden, dort wird erklärt, wie man jar-Dateien "per Hand" erzeugt.

Wie man jar-Dateien mit NetBeans 5.0 erzeugt, müsste ich jetzt mal nachschauen. Vielleicht ist ja noch jemand schneller.
Hier hatte ich mal die Vorgehensweise gepostet für eine ältere Version:
http://www.java-forum.org/de/viewtopic.php?t=11060


----------



## André Uhres (14. Mrz 2006)

New Project: General | Java Application | Next > | Set as main project:yes | Create Main Class:yes [Name der Hauptklasse] | Finish
F11 (Build main project )
Fertig ! (das jar ist in Projectfolder\dist)


----------



## swerflash (14. Mrz 2006)

Hallo,

wenn ich F11 klicke dann erstellt er die jar Datei:

init:
deps-jar:
compile:
To run this application from the command line without Ant, try:
java -jar "C:\Dokumente und Einstellungen\swerflash\Eigene Dateien\Netbeans\ErstesProgramm\dist\ErstesProgramm.jar"
jar:
BUILD SUCCESSFUL (total time: 1 second)


nur wenn ich versuche die Datei zu starten, die sich im dist Ordner befindet, dann passiert nichts. Ich klicke ErstesProgramm.jar(mit doppelklick)  an und sehe nicht. Es sollte eigentlich ein JFrame mit einem JButton und JTextField angezeigt werden. Also der führt das Programm nicht aus. Woran könnte das liegen?


----------



## André Uhres (14. Mrz 2006)

Hast du die Hauptklasse in der _main()_-Methode auch mit _new_ erzeugt?

```
public class Main { 
    
    /** Creates a new instance of Main */
    public Main() {
        ...
    }
...
    public static void main(String[] args) {
        new Main();//<-- HIER <---------------------------
    }
    
}
```

Wenn ja, biste ganz sicher daß du keine speziellen Manipulationen gemacht hast ?
Mach's mal genau so:
*File Menu --> New Project
- Categories: General
- Projects: Java Application
- Next >*
Jetzt müssten default-Werte erscheinen, z.B.:
*- Project Name: JavaApplication3
- Project Location: c:\Document and Settings\uhrand
- Project Folder: c:\Document and Settings\uhrand\JavaApplication3
- Set as Main Project (abgehakt)
- Create Main Class(abgehakt): javaapplication3.Main*
Lass mal alles so stehen wenn es diesem Beispiel soweit entspricht.
*Finish*
Jetzt müsste dieser Code erscheinen:


```
/*
 * Main.java
 *
 * Created on 14 mars 2006, 14:36
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package javaapplication3;

/**
 *
 * @author uhrand
 */
public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }
    
}
```
*"// TODO code application logic here"* ersetzte durch *"new Main();"*
Den Konstruktor ersetzte durch:

```
/** Creates a new instance of Main */
    public Main() {
        JOptionPane.showMessageDialog(null, "OK");    
    }
```
Dann *F11* drücken und die erzeugte jar-Datei testen *durch Doppelklick auf die jar-Datei*.
Dann müsste der Dialog mit dem OK-Button erscheinen.
Der Dialog muss natürlich auch kommen wenn du *F6* drückst.

BTW, in der Datei ..\dist\README.txt stehen auch noch nützliche Informationen.


----------



## swerflash (24. Mrz 2006)

Hallo,

ich habe jetzt auf anderem PC NetBeans5 installiert. Wenn ich jetzt versuche meine jar zu öffnen, die sich im dist Ordner befindet, dann öffnet er die mit winzip. Mit welchem Programm muss ich das starten?


----------



## L-ectron-X (24. Mrz 2006)

Viele Packprogramme schnappen sich die Dateiendung .jar, um sie öffnen/packen/entpacken zu können.
Öffne mal WinZip und deaktiviere die Einstellung, dass WinZip .jar-Dateien öffnen/packen/entpacken kann.
Danach kannst du jar-Dateien per Doppelklick starten.


----------



## swerflash (24. Mrz 2006)

Wenn ich jetzt doppelklick mache, dann fragt er mich mit welchem Programm ich die öffnen will.

jdk-1_5_0_06-windows-i586-p und netbeans-5_0-windows sind auf diesem Rechner installiert.


----------



## L-ectron-X (24. Mrz 2006)

Hmm, könnte knifflig werden.
Auf jeden Fall mit javaw.exe. Das Problem ist jetzt dabei, es kann sein, dass du die Dateiverknüpfung noch einmal editieren musst, damit das klappt.
Daher gleich ein Weg, der zwar komplizierter ist, dafür aber zum Ziel führt.

Klicke nacheinander _Arbeitsplatz - Extras - Ordneroptionen -Dateitypen_
Schaue nun in der Liste nach der Endung _JAR_. Diese sollte schon in der Liste sein.
Wenn sie wider Erwarten nicht drin ist, klickst du auf den Button _Neu_ und gibst im Textfeld _JAR_ ein. Mit Klick auf den Button _Erweitert_ kannst du mal nach _Executable Jar File_ suchen.
Ist es vorhanden, dann auswählen und _OK_ klicken. Ist kein solcher Eintrag zu finden, dann legst du ihn so an.

Du kannst das Ganze jetzt noch überprüfen, bzw. musst die Verknüpfung anpassen, in dem du nochmal die Dateitypenliste öffnest und nach _JAR_ suchst.
Wähle den Eintrag mit einfachem Mausklick aus und klicke dann den Button _Erweitert_.
Bei Aktionen sollte schon _open_ drin stehen. Klicke nun den Button _Bearbeiten_.
Im Textfeld für _Anwendung für diesen Vorgang:_ sollte nun folgendes drin stehen:
_"C:\Programme\Java\jre1.5.0_06\bin\javaw.exe" -jar "%1" %*_
(...angepasst an dein System.)
Außerdem ist ein Haken an _DDE verwenden_ notwendig.
Darunter im Textfeld für _Anwendung_ muss _javaw_ drin stehen.
Bestätige nun alles mit _OK_.

Probiers nun aus.


----------



## swerflash (24. Mrz 2006)

Hallo,

geht immer noch nicht, ich habe aber nicht alles verstanden bzw konnte nicht alles machen wie du das beschrieben hast.

Bei Dateitypen konnte ich JAR nicht finden, deshalb habe ich selber JAR erstellt.

Als ich auf Erweitert geklickt habe, habe ich Executable Jar File nicht gefunden und habe dann auf NEU gelassen. Dann habe ich auf Ändern geklickt um ihm zu sagen, mit was er das öffnen soll und habe Java(TM) 2 Platform Standard Edition binary ausgewählt(javaw.exe). Und auf Ok gedrückt, wenn ich jetzt versuche das zu öffnen, dann kriege ich Fehler. Could not find main class. Programm will exit.

Das Programm funktioniert jedoch in NetBeans einwandfrei und kann auch ohne Problemen starten, verstehe das nicht hmmm.

Was meintest du damit? _Außerdem ist ein Haken an DDE verwenden notwendig._ Also mit DDE.

Ich habe auch alles richtig gemacht, New Projet-> etc... wie man mir unten aufgeschrieben hat, so habe ich aber eigentlich immer gemacht.


----------



## L-ectron-X (24. Mrz 2006)

L-ectron-X hat gesagt.:
			
		

> Im Textfeld für _Anwendung für diesen Vorgang:_ sollte nun folgendes drin stehen:
> _"C:\Programme\Java\jre1.5.0_06\bin\javaw.exe" -jar "%1" %*_
> (...angepasst an dein System.)



Passt das hier auch? Steht das bei dir für die Dateiendung drin?
Falls du es nicht hinbekommst kannst du auch das JRE deinstallieren und neu installieren, dann müsste die Endung wieder auf Java registriert sein.


----------



## swerflash (24. Mrz 2006)

Neuinstallation gerade versucht und hat nichts gebracht.


Bei Vorgänge steht bei mir open bei Anwendung für dieses Vorgang steht C:\Programme\Java\jdk1.5.0_06\bin\javaw.exe "%1" und DDE verwenden aktiviert. Liegt das vieleicht an NetBeans5, dass der irgendwas falsch macht?


----------



## swerflash (24. Mrz 2006)

kann ich jemanden mein Programm schicken? also mit allen Ordnern die NetBeans erstellt hat und kann jemand sich das bitte anschauen und vieleicht findet ihr raus woran das liegt?

Ist ganz kleines Programm, besteht aus 2 jTextField und 1 JButton

Habe das verpackt mit winrar 68,3 KB (69.976 Bytes).


----------



## L-ectron-X (25. Mrz 2006)

Der Eintrag muss genau so aussehen wie jetzt folgt:

*"C:\Programme\Java\jre1.5.0_06\bin\javaw.exe" -jar "%1" %**

Also auch mit allen Anführungszeichen etc. Und natürlich muss die JRE bei dir auch in dem Verzeichnis installiert sein, wie angegeben. D.h., es kann sein, dass du den Eintrag anpassen musst.

Versuche auch mal dein Programm auf der Konsole mit
*java -jar MeinProgramm.jar* zu starten.
Funktioniert das? Wenn nicht bitte die Fehlermeldung posten.

Sollte das nicht helfen kannst du mir eine PN schicken, dann tauschen wir mal unsere Mail-Adressen.


----------



## L-ectron-X (25. Mrz 2006)

OK, habe das Programm erhalten, angesehen und bin zu folgendem Schluss gekommen:
Dein Programm besteht aus einer Klasse Main und einer Klasse NewFrame, die mehrere anonyme Klassen definiert.
Die Klasse NewFrame und die Klasse Main haben beide eine main()-Methode. Während die main()-Methode der Klasse NewFrame laut Code die Klasse starten kann, ist die Implementierung main()-Methode der Klasse Main leer.
Daraufhin habe ich die Manifest-Datei der jar-Datei auf ihren Inhalt hin überprüft.


			
				Manifest-Datei hat gesagt.:
			
		

> Main-Class: erstesprogramm.Main


Der Interpreter soll also die Klasse Main als Einstiegspunkt deiner Applikation verwenden, aber die main()-Methode, die ausgeführt werden soll ist leer!


			
				main() in Main hat gesagt.:
			
		

> ```
> /**
> * @param args the command line arguments
> */
> ...



Desweiteren verwendest du das Package _org.jdesktop.layout.GroupLayout_, aber in der jar-Datei finden sich keine Packages und Klassen dazu.


----------



## swerflash (25. Mrz 2006)

EDIT: Ok ich habs,

ich habe in die Main.java

            java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });

reingeschrieben.

Jetzt habe ich das zwar in der JFrame auch stehen, aber solange das funktioniert, ist mir egal .


----------



## willi69 (27. Apr 2006)

Arghh!!

Warum editierst Du nicht einfach das Manifest? Doppelt hält zwar besser, aber in dem Fall völlig überflüssig.

Übrigens, wenn Du bei Netbeans in den Projektproperties die Main-Klasse setzt, und das Projekt neu Bauen lässt, sollte im "dist" Verzeichnis alles liegen, was Du benötigst um das Projekt weiterzugeben.


----------



## MythGraphics@web.de (12. Mai 2006)

Alles, was in diesem Verzeichnis ist, wird zum ausführen benötigt - man kann netBeans 5.0 bestimmt auch mitteilen, das alles in eine einzige .jar-Datei zu packen, und da möchte ich gerne wissen, wie. Mir geht es speziell um die swing-layout-1.0.jar, die netBeans unter dist/lib/ erstellt.


----------

