es grüßt ein Java-Neuling. Es war ja noch ein Einfaches dem Rechner beizubringen, daß er Dateien mit der Endung .java nach Doppelklick via javac FileName.java compiliert. Dumm nur, daß die Syntax für die Ausführung des Bytecodes verlangt, daß das .class -File ohne Extension (also Erweiterung .class ) an java.exe übergeben wird.
Da die Doppelklick-zuordnung stets über %1 (also den ersten Übergabeparameter) läuft, weiß ich nun nicht, wie ich aus eben jenem Übergabeparameter die Extension herausnehmen kann. Wer weiß da weiter?
Sollte Euch als Lösung nur eine Batchdatei einfallen, die imstande ist, das zu übernehmen, möchte ich um Programmierhilfe hierzu bitten, da ich keinen Schimmer habe, wie und mit welchen Befehlen man in einer solchen den Übergabeparameter als String behandeln kann.
Andererseits: Ihr startet Eure Java-Proggies doch sicher nicht durch einen Kommandozeilenaufruf „java soundso“, oder doch??? Gips da nicht eine elegantere Lösung, auch wenn in meinen Anfängerproggies das „DOS-Fenster“ noch vonnöten ist?
Sollte Euch als Lösung nur eine Batchdatei einfallen, die
imstande ist, das zu übernehmen, möchte ich um
Programmierhilfe hierzu bitten, da ich keinen Schimmer habe,
wie und mit welchen Befehlen man in einer solchen den
Übergabeparameter als String behandeln kann.
Eine bat datei schreiben die dann mit start javaw xxxx
enthält
da hatte ich mich wohl mißverständlich ausgedrückt. Ich meinte eigentlich ein Batchfile, das Windooos sagt, daß es grundsätzlich alle java-Öffnungen ohne Extension ausführen soll. Wenn ich ein Batch schreibe bezieht sich das ja auch immer nur auf ein Bestimmtes Prog, ich wollte eigentlich eine allgemeine Lösung.
um’s vorweg zu nehmen: Ich hab keine Antwort, sondern nur 'ne Anmerkung zu Deinem Problem (sorry).
Wenn man ein Class-File hat (sagen wir „MeineKlasse.class“) dann reicht es im Allgemeinen nicht aus, diese einfach mit „java w MeineKlasse“ zu starten, da eine ordentlich programmierte Klasse meist auch einen ordentlichen Package-Namen hat.
Wenn das Class-File zur Klasse „meinpackage.MeineKlasse“ in c:\temp\MeineKlasse.class zu finden wäre, könnte ich es zum Beispiel gar nicht starten, es müsste eher in c:\temp\meinpackage\MeineKlasse.class liegen und auf „c:\temp-Ebene“ via „javaw meinpackage.MeineKlasse“ gestartet werden.
Will heißen, wie immer eine solche „Doppelklick-Lösung“ auch aussehen mag, man müsste auf jeden Fall zuerst den Byte-Code im Class-File analysieren, um an den Package-Namen zu kommen, dann in das ensprechende Oberverzeichnis wechseln und dann den Java-Interpreter aufrufen.
Bei größeren Programmen kannst Du Dir fast immer sicher sein, dass ein einfacher „java(w)“-Aufruf nicht ausreicht: Du musst stattdessen noch zusätzlich den Classpath spezifizieren, diverse Umgebungsvariablen setzen, Parameter übergeben etc.
Thomas hat vollkommen recht: Pack Deine Anwendungen in startbare Jar-Files und starte diese mit „javaw -jar mystuff.jar“, das Ganze dann „Doppelklick“-tauglich zu machen ist ja theoretisch kein Problem, aber ich würde der Endung „.jar“ dann doch lieber 'n Zip-Programm zuordnen, dass ist glaub in der Praxis sinnvoller (aber jeder wie er will - ich würd da eher was mit „SendTo“ statt „Doppelklick“ machen) und schreib evtl. noch 'n Bat-Datei und/oder 'n Shell-Skript etc. (muss für jedes Programm extra gemacht werden, aber dass klappt dann wenigstens immer).