# Hauptklasse wird nicht gefunden.



## Ulmerschwabe (26. Mrz 2007)

Hallo alle zusammen

Habe eine Java-Applikation, die ich als Java-Webstart laufen lassen will.
Dafür habe ich ein Jar-Archiv erstellt mit folgender Struktur:

robotGUI.jar/robotGUI
robotGUI.jar/guiFeatures

in dem Unterordner robotGUI befindet sich das .class - File GuiMain.class

Hier mein jnlp - File:



```
<?xml version="1.0" encoding="utf-8"?>
 



<jnlp codebase="http://192.168.0.4/" href="robotGUI.jnlp">
 
<information>
  <title>GUI fuer Roboter</title>
  <vendor>Marco Hartich</vendor>
  <homepage href="http://localhost/index.htm"/>
  <description>GUI fuer Roboter</description>
  
  <offline-allowed/>
</information>

<information locale="de">
  <description>GUI fuer Roboter</description>
  <offline-allowed/>
</information>
 
<security>
   <all-permissions/> 
</security>

<resources>
  <j2se version="1.3+"/>
  <jar href="robotGUI.jar"/>
</resources>

<application-desc main-class="robotGUI/GuiMain"/>

</jnlp>
```

Das jar-Archiv ist signiert.
Wenn ich nun diese Anwendung von einem anderen Rechner aus starten möchte, findet dieser die Hauptklasse robotGUI/GuiMain.class nicht.
Habe schon versucht aus Slash Backslash zu machen; vorne ein Slash, mit Punkt ohne Punkt usw... hat aber nichts gebracht.

Es muss am Pfad liegen, da ich genau dieses jnlp-File für eine andere Applikation schon genutzt habe, die allerdings keine Unterordner hatte. Gibt es bei Unterordnern Probleme oder mache ich irgendetwas falsch ?

Ist bestimmt irgendein dummer kleiner Fehler 

Gruß Marco


----------



## Wildcard (26. Mrz 2007)

robotGUI/GuiMain.class
Ist die Klasse auch im package robotGUI?


----------



## Ulmerschwabe (26. Mrz 2007)

ja, das ist sie.


----------



## Ulmerschwabe (27. Mrz 2007)

So habe jetzt nochmal versucht und versucht...
Also dies ist meine komplette jnlp-Datei:


```
<?xml version="1.0" encoding="utf-8"?>
<jnlp codebase="http://192.168.0.4" href="robotGUI.jnlp">
 <information>
  <title>GUI fuer Roboter</title>
  <vendor>Marco Hartich</vendor>
  <homepage href="http://192.168.0.4/index.htm"/>
  <description>GUI fuer Roboter</description>
</information>

<information locale="de">
  <description>GUI fuer Roboter</description>
</information>
 
<security>
   <all-permissions/>
</security>

<resources>
  <j2se version="1.3+"/>
  <jar href="roboterGUI.jar"/>
</resources>

<application-desc main-class="roboterGUI.GuiMain"/>
</jnlp>
```

Das ist mein Manifest:

```
Manifest-Version: 1.0
Created-By: 1.4.2_12 (Sun Microsystems Inc.)
Main-Class: robotGUI/GuiMain.class

Name: guiFeatures/TrackingBall.class
SHA1-Digest: 4KLaaDk0DhbEtnDiSgJVfBVk/bE=

Name: guiFeatures/LaserScan3D.class
SHA1-Digest: S6ydGDZihmkVVEyiFGjuyRjDi98=

Name: robotGUI/GuiMain.class
SHA1-Digest: wpouq7fJdmIQF+5WjSRcMXcj5fU=

Name: robotGUI/Map3DControl.class
SHA1-Digest: sN4T41u5vDGYdu6RAIBzoza11vY=

Name: guiFeatures/earth_at_the_night_1024x768.jpg
SHA1-Digest: uF6uUO2gOf2BjIqbmphG7t2z8DI=

Name: Daten.txt
SHA1-Digest: F+4ULeUAxsoyALP7VKUU+tXWV9M=
```

Die Pfade lauten wie folgt:
./guiFeatures/LaserScan3D.class
./guiFeatures/TrackingBall.class
./guiFeatures/earth_at_the_night_1024x768.jpg
./robotGUI/GuiMain.class
./robotGUI/Map3DControl.class
./Daten.txt

Diese Pfade sind dann auch wieder in der .jar Datei zu finden...

Wenn ich nun das Progr. von einem anderen Rechner aus starten möchte (192.168.0.6) kommt folgende Fehlermeldung:


Hauptklasse roboterGUI.GuiMain konnte nicht in http://192.168.0.4/roboterGUI.jar gefunden werden

Die Exception:

JNLPException[category: Startdateifehler : Exception: null : LaunchDesc: 
<jnlp spec="1.0+" codebase="http://192.168.0.4/" href="http://192.168.0.4/robotGUI.jnlp">
  <information>
    <title>GUI fuer Roboter</title>
    <vendor>Marco Hartich</vendor>
    <homepage href="http://192.168.0.4/index.htm"/>
    <description>GUI fuer Roboter</description>
  </information>
  <security>
    <all-permissions/>
  </security>
  <update check="timeout" policy="always"/>
  <resources>
    <java version="1.3+"/>
    <jar href="http://192.168.0.4/roboterGUI.jar" download="eager" main="false"/>
  </resources>
  <application-desc main-class="roboterGUI.GuiMain"/>
</jnlp> ]
	at com.sun.javaws.LaunchDownload.getMainClassName(Unknown Source)
	at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
	at com.sun.javaws.Launcher.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Mein Rechner hat die IP 192.168.0.4 und, falls dies was ausmacht, es ist MS Win XP
Wie am Anfang schon erwähnt, funktioniert es bei einer kleinen Applikation mit einer Datei ohne Ordner super. Habe bestimmt nur ein Problem mit dem Pfad aber ich komme einfach nicht darauf....

Wenn mir jemand helfen kann, wäre ich wirklich sehr froh...


----------



## L-ectron-X (27. Mrz 2007)

Hast du einen lokalen Webserver laufen, von dem du die WebStart-Applikation herunterlädst, um sie anzuzeigen?


----------



## thE_29 (27. Mrz 2007)

Sieht ja ganz danach aus 

Obwohl es ja egal sein sollte probier das mal bei href reinschreiben

<jar href="roboterGUI.jar" main="true" download="eager">


Und wenn du http://192.168.0.4 siehst du da diese jar Datei überhaupt?! Und gib ja nicht im jnlp beim <jar href="192.. die IP mit an!


Und die oberste Zeile änder auch mal ab:

jnlp spec="1.0+" codebase="http://192.168.0.4/" href="http://192.168.0.4/robotGUI.jnlp"> 


und zwar beim href="robotGUI.jnlp">

Da die codebase ja schon der server ist (IP).


----------



## Ulmerschwabe (27. Mrz 2007)

Danke für die Hilfe, aber es klappt auch mit den Änderungen nicht wirklich.

@L-ectron-X: Ja, ich habe nen Indianer am Laufen und versuche mit einem anderen Rechner darauf zuzugreifen.
@thE_29: War nett gemeint mit den Hinweisen, aber ich bekomme immernoch die selbe Exception

Hatte im Manifest nen kleinen Fehler... GuiMain.class in der Maindeklaration. Die habe ich auch schon gekillt, nutzt aber nichts ???:L 

Naja, vielleicht hilft ein Kaffee weiter 

Ich bin natürlich offen für sämtliche weiter Tipps


----------



## Ulmerschwabe (28. Mrz 2007)

Hallöchen

So, habe den Grund gefunden, warum alles irgendwie nicht so funktioniert hat, wie ich mir das gedacht habe.
Der eigentliche Grund wurde verpackt in Exceptions, die damit nichts zu tun hatten...

In meiner jar-Datei befindet sich eine Textdatei, die ich von dort auch auslesen möchte.
Zieht ein anderer Rechner dieses jar-File mittels WebStart herunter, so speichert er das File an den Ort, der in Systemsteuerung/java eingegeben wurde.

Gibt es eine Möglichkeit diesen Pfad auszulesen? Habe mich mal durch die Propertys gewühlt, aber ich meine dort gibt es nicht so eine Funktion.
Wenn ich die im Jar-File enthaltene TextDatei auslesen möchte, dann muss ich doch diesen Pfad kennen, oder nicht!?

Kann mir nun einer sagen, wie ich an den Pfad ran komme??


----------



## Wildcard (28. Mrz 2007)

Ulmerschwabe hat gesagt.:
			
		

> Wenn ich die im Jar-File enthaltene TextDatei auslesen möchte, dann muss ich doch diesen Pfad kennen, oder nicht!?
> Kann mir nun einer sagen, wie ich an den Pfad ran komme??


Nö. Die Resourcen lädst du mit getClass().getResource.
Der Pfad geht dich nichts an.


----------



## Ulmerschwabe (28. Mrz 2007)

@WildCard: Dankeschön für den guten Tipp; der war Gold wert. Du hast mir einiges an Arbeit erspart...

Gruß Marco


----------

