# Programm von CD startet nicht (autorun/autostart/jre



## JetJava (19. Dez 2007)

hay,

Ich wollte mein neues Programm mal nach dem Tutorial, ein programm auf mehrere Möglichkeiten zu starten starten lassen...

Hier der Link zum Tut: *KLICK*

Meine Dateien auf der CD sehen so aus:

autorun.inf

```
[autorun]
open=autostart.bat
icon=icon.ico
```

(da ist keine Leerzeile am schluss, ist das der Grund?

autostart.bat

```
@echo off

rem Bitte den Pfad zur JRE anpassen!
set CDJRE=\jre1.6.0_02\bin

rem Start einer jar-Datei
rem %CDJRE%\javaw.exe -jar DeinProgramm.jar

rem Start einer class-Datei
start %CDJRE%\javaw.exe JLabelDemo

rem Umgebungsvariable wieder löschen
set CDJRE=

rem Console schließen
exit
```

(auch ohne Leerzeile am Ende

dann noch ein Icon (unwichtig), die Klasse names 
JLabelDemo

und natürlich noch das JRE... das ganze sieht auf der CD so aus:

+-----jre1.6.0_2
|          |
|          +-----bin
|
+-----autostart.bat
|
+-----autorun.inf
|
+-----icon.ico
|
+----JLabelDemo.class


----------



## JetJava (19. Dez 2007)

So, nun habe ich noch ml hinter beides eine leerzeile gemacht und:

nichts geht... ich brenne es auf die cd, lege die cd ein, es startet, doch es ommt kein frame oder sonstiges...


----------



## dieta (19. Dez 2007)

Du musst zum Ausführen einer Klasse noch den Classpath setzen.


----------



## JetJava (19. Dez 2007)

heißt also?


----------



## maki (19. Dez 2007)

```
@echo off
```
Lass das weg, dann siehst du mehr.


----------



## L-ectron-X (19. Dez 2007)

dieta hat gesagt.:
			
		

> Du musst zum Ausführen einer Klasse noch den Classpath setzen.


Das brauchst du hier nicht, hier ist schon alles fertig.



			
				maki hat gesagt.:
			
		

> ```
> @echo off
> ```
> Lass das weg, dann siehst du mehr.


Das hilft auch nicht, dann kommen nur deine "Eingaben" als Echo zurück.

Starte stattdessen mal das Programm zum Test mit veränderten Zeilen 10 und 16:

```
start %CDJRE%\java.exe JLabelDemo

rem exit
```
Und guck mal, was in der Konsole ausgegeben wird.


----------



## Murray (20. Dez 2007)

L-ectron-X hat gesagt.:
			
		

> dieta hat gesagt.:
> 
> 
> 
> ...


Das würde ich verstehen, wenn er die Variante mit dem Jar-File verwenden würde; das macht er aber doch nicht. Und daher sollte der Classpath besser doch gesetzt werden.


```
start %CDJRE%\java.exe -cp \ JLabelDemo
```

bzw.


```
start %CDJRE%\javaw.exe -cp \ JLabelDemo
```


----------



## JetJava (20. Dez 2007)

ja, ich sehe mehr [...]

er schriebt mehr rein, doch es passiert mal wieder nüscht


----------



## Murray (20. Dez 2007)

Und was wird auf der Konsole ausgegeben?

Was passiert denn, wenn am DOS-Prompt in das Root-Verzeichnis des CD-Laufwerks wechselst und direkt

```
\jre1.6.0_02\bin\java -cp \ JLabelDemo
```
eingibst?


----------



## JetJava (20. Dez 2007)

sry for doppelpost aber...

ich habe es ja früher schonmal gemacht und es hat alles SO wie ich es gepostet habe geklappt...

aber nun nicht mehr.


----------



## JetJava (20. Dez 2007)

genial... ich versuchs...

///////////////////////////

Ich ahbe schon 9 CD's verballert, für ein komisches Programm ;P


----------



## Murray (20. Dez 2007)

Aus den letzten Posts werde ich nicht schlau - hast du jetzt noch ein Problem, oder nicht mehr?


----------



## JetJava (20. Dez 2007)

naja... mein code sollte nach letzten Ständen etwas so aussehen:

```
@echo off

start \jre1.6.0_02\bin\javaw.exe -cp \ JLabelDemo

rem exit
```

Aber dann schreibt er, er könne javaw. exe nicht finden...


----------



## Murray (20. Dez 2007)

Ist beim Kopieren der JRE vielleicht etwas schiefgegangen? Existiert die Datei javaw.exe denn im Verzeichnis \jre1.6.0_02\bin?


----------



## JetJava (20. Dez 2007)

das tut sie, daher ist die ganze Sache ja so komisch...  ???:L  :bahnhof:


----------



## Murray (20. Dez 2007)

Dann dürfte das Problem wohl sein, dass Windows (wohl seit Win2K, vorher ging es noch) beim autorun das Working-Directory nicht auf das Root-Directory des CD-Laufwerks setzt.

Versuch mal

```
[autorun]
shellexecute=autostart.bat
icon=icon.ico
```


----------



## L-ectron-X (21. Dez 2007)

JetJava hat gesagt.:
			
		

> ja, ich sehe mehr [...]
> 
> er schriebt mehr rein, doch es passiert mal wieder nüscht



Ohne Fehlermeldung kann dir niemand helfen.
Warum beschreibst du nicht erst mal eine CD-RW bis es funktioniert oder testest es mit einem Image?


----------



## JetJava (21. Dez 2007)

das Prpblem ist - es geibt keine Fehlermedlung... konsole öffnet sich - kein Text - schlie00t sich wieder und das ars...

//EDIT// 12 CD's 

//EDIT2// Nach aktuellen ständen sieht das jetzt so aus:

autostart.bat

```
@echo off

rem Bitte den Pfad zur JRE anpassen!
set CDJRE=\jre1.6.0_02\bin

rem Start einer jar-Datei
rem %CDJRE%\javaw.exe -jar DeinProgramm.jar

rem Start einer class-Datei
start %CDJRE%\javaw.exe JLabelDemo

rem Umgebungsvariable wieder löschen
set CDJRE=

rem Console schließen
exit
```
wenn ich autostart.bat auf dem PC anklicke findet er javaw.exe nicht...

autorun.inf

```
[autorun]
shellexecute=autostart.bat
icon=icon.ico
```

das Verzeichnis is immernoch das Selbe...

//EDIT3// Er macht wieder ncihts bei der CD... keine Fehlermedlung.... nichts... er öffnet die Konsi, schließt sie wieder und das wars...


----------



## Murray (21. Dez 2007)

Versuch es mal ohne das Batch-File:


```
[autorun]
open=\jre1.6.0_02\bin\javaw.exe -cp . JLabelDemo
icon=icon.ico
```


----------



## JetJava (21. Dez 2007)

Murray hat gesagt.:
			
		

> Versuch es mal ohne das Batch-File:
> 
> 
> ```
> ...



dann passiert überhaupt nichts mehr...


----------



## me1357 (21. Dez 2007)

JetJava hat gesagt.:
			
		

> //EDIT// 12 CD's


Ouch .. hast du noch nie was von CD-Images und Programmen wie Daemon-Tools gehört?


----------



## JetJava (21. Dez 2007)

me1357 hat gesagt.:
			
		

> JetJava hat gesagt.:
> 
> 
> 
> ...


nein...

Es sind gez 14


----------



## L-ectron-X (21. Dez 2007)

Du wärst jetzt der Erste, bei dem das nicht funktioniert! :bae: 

Und du sollst auch mal das machen, was ich dir vorgeschlagen habe.
Entferne die Zeile mit dem _exit_, damit die Konsole geöffnet bleibt.
Und ersetze _javaw.exe_ mit _java.exe_. Sonst wirst du auch keine Fehlermeldung bekommen.



			
				JetJava hat gesagt.:
			
		

> ja, ich sehe mehr [...]
> 
> er schriebt mehr rein, doch es passiert mal wieder nüscht


So so... was hast du denn "gesehen"?


----------



## dieta (21. Dez 2007)

Du darfst glaube ich nicht \jre1.6.0_02\bin\javaw.exe schreiben, sondern entweder .\jre1.6.0_02\bin\javaw.exe oder jre1.6.0_02\bin\javaw.exe, denn sonst sagt er, er würde die Datei nicht finden.


----------



## JetJava (21. Dez 2007)

also, ich ahbe das ganze mal umgestellt, und es sieht so aus:

autostart.bat:

```
rem Bitte den Pfad zur JRE anpassen!
set CDJRE=jre1.6.0_02\bin

rem Start einer jar-Datei
rem %CDJRE%\javaw.exe -jar DeinProgramm.jar

rem Start einer class-Datei
%CDJRE%\java.exe TesT

rem Umgebungsvariable wieder löschen
set CDJRE=
```

autorun.inf

```
[autorun]
open=autostart.bat
icon=icon.ico
```

Test.class 

[...]

icon.ico  [...]

und die Ausgabe:






Alerdings muss man schnell sein, um den screenie zu schießen... es hats ich direkt wieder geschlossen[/quote]


----------



## L-ectron-X (21. Dez 2007)

Was passiert eigentlich, wenn du das Programm ohne CD (ganz normal) startest?


----------



## JetJava (21. Dez 2007)

per batch oder ohne?

wenn cih das Programm über Konsole starte alses prima
(java JLabelDemo)

und Batch fndet er javaw.exe nicht (lokal)

von der cd aus öffnetsich die konsole und shcleißt sich wieder


----------



## dieta (21. Dez 2007)

Füg' mal am Ende der Batch ein "pause" ein, damit hältst du das weitere Abarbeiten der Batch bis zum Druck einer Taste auf. So kannst du die mal ganz in Ruhe die Ausgabe vom Aufruf von Java anschauen.


----------



## JetJava (21. Dez 2007)

den habe icgh doch eben im form eines Bldes gepostet...


----------



## L-ectron-X (21. Dez 2007)

OK, dann muss was mit deinem Code nicht in Ordnung sein. Der Interpreter wird so wie es aussieht ohne Fehler gestartet. Da keine Fehlermeldung kommt, wird dein Programm regulär ausgeführt und sofort wieder beendet. Wenn nichts angezeigt wird ist möglicherweise in deinem Code ein Problem.
Also: Code zeigen!


----------



## JetJava (22. Dez 2007)

```
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

public class JLabelDemo
{
	public static void main(String[] args)
	{
		NewFrame frame = new NewFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

class NewFrame extends JFrame
{
	public NewFrame()
	{
		setTitle("Test!");
		setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
		
        JLabel label = new JLabel("<html>Test</html>");
        add(label);
	}
	
	public static final int DEFAULT_WIDTH = 300;
	public static final int DEFAULT_HEIGHT = 200;
}
```

Aber der Code lässt sich via Konsole ja ausführen :S


----------



## L-ectron-X (22. Dez 2007)

Dein Code ist in Ordnung. Ich guck mir das noch mal an. Keine Ahnung, wo es da jetzt klemmen könnte
Du bist wirklich der Erste, bei dem es ein bisher nicht lösbares Problem bei der Erstellung einer CD gibt. ???:L


----------



## L-ectron-X (22. Dez 2007)

Schon komisch. Da fehlte ein Punkt in der Pfadangabe, den habe ich die ganze Zeit übersehen.
Passe mal den Pfad an:

```
@echo off 

rem Bitte den Pfad zur JRE anpassen! 
set CDJRE=.\jre1.6.0_03\bin

rem Start einer jar-Datei 
rem start %CDJRE%\javaw.exe -jar DeinProgramm.jar 

rem Start einer class-Datei 
start %CDJRE%\javaw.exe DeinProgramm 

rem Umgebungsvariable wieder löschen 
set CDJRE= 

rem Console schließen 
exit
```

Der FAQ-Beitrag wurde vielleicht irgendwann mal modifiziert.
Jedenfalls funktionierts bei mir.


----------



## JetJava (23. Dez 2007)

x'DDD ich würde mal sagen: shice...

1. ich ahbe nur noch 2 CD's ;P

2. da funzt auch so nciht

3. habe ich gerstern ncoh (bevor der faq-beitrag wieder geändert wurde) erfolgreich ein kleines Programm:

```
import javax. swing.*;

public class TestFrame
{
	public static void main(String[] args)
	{
		JOptionPane.showMessageDialog(null, "Hey!");
		JOptionPane.showMessageDialog(null, "Na?");
		JOptionPane.showMessageDialog(null, "Das hier ist ein");
		JOptionPane.showMessageDialog(null, "Ganz ganz ganz");
		JOptionPane.showMessageDialog(null, "ganz");
		JOptionPane.showMessageDialog(null, "ganz");
		JOptionPane.showMessageDialog(null, "fieser");
		JOptionPane.showMessageDialog(null, "Virus!");
		JOptionPane.showMessageDialog(null, "Da ich nciht viel Ahnun vom Computer habe");
		JOptionPane.showMessageDialog(null, "Ist des en Manueller Wuäm...");
		JOptionPane.showMessageDialog(null, "Also löschen se Bidde alle Dadeien von die Festplatte!");
		JOptionPane.showMessageDialog(null, "Vielen Dank.");
		JOptionPane.showMessageDialog(null, "Tschüssi!");
	}
}
```

starten lassen (von CD) und es hat gefunzt [...]


----------



## SebiB90 (25. Dez 2007)

JetJava hat gesagt.:
			
		

> +-----jre1.6.0_2
> |          |
> |          +-----bin
> |
> ...





			
				JetJava hat gesagt.:
			
		

> ```
> import java.awt.*;
> import java.awt.event.*;
> import java.io.*;
> ...



eh?
oben im verzeichnis sehe ich eine class datei. in deinem code allerdings 2 klassen.
kann es sein, dass du nur vergessen hast, die 2. class datei zu kopieren?
weil der andere code, mit nur einer datei/klasse funktioniert ja...


----------



## JetJava (25. Dez 2007)

SebiB90 hat gesagt.:
			
		

> JetJava hat gesagt.:
> 
> 
> 
> ...



nach dem kompilieren erhalte ich aber nur eine class datei...


----------



## SebiB90 (25. Dez 2007)

das kann net sein
du hast 2 klassen also auch 2 class dateien.
selbst bei anonymen inneren klassen gibt es ne 2. datei. dann muss es da auch eine geben.


----------



## JetJava (25. Dez 2007)

probiere es doch aus -.-'


----------



## SebiB90 (25. Dez 2007)

hab ich. resultat war:

JLabelDemo.class
*UND*
NewFrame.class

ich weiß ja net wie du compilierst. aber man bekommt da 2 class dateien raus.


----------

