Tja, im Prinzip ist meine Frage schon im Threadtitel enthalten. Ich möchte eine .exe kompilieren, die ihren eigenen Dateinamen einlesen können soll. Die File-Klasse bringt mich hier irgendwie nicht weiter. Wäre froh, wenn jemand von euch einen Anhaltspunkt für mich hätte.
nope. Das einzige was du tun könntest, wäre ein C++-Launcher schreiben (ist nicht mal wirklich schwer). Aber ansonsten...nein, Java wird über eine JRE ausgeführt, deswegen läuft dein Programm auch unter der "referenz" Java.
Oh, das ging ja wirklich schnell, danke erstmal. Und, tja das ist schade..Da muss ich mir wohl was anderes ausdenken. Der Gedanke war, mit dem Dateinamen eine Art config-String zu übergeben, der auf einzelnen Zielrechnern variieren kann. Ich wollte mir damit eigentlich eine zweite Datei ersparen, weshalb die Idee mit dem Launcher nicht in Frage kommt. Schade dass das mit Java nicht möglich ist. Aber wo Du es erwähntest: Kann eine in c++ programmierte Anwendung ihren eigenen Dateinamen referenzieren?
Es handelt sich dabei um ein simples WOL-Skript, was einen bestimmten Server wecken soll. Je nachdem welcher Rechner das Programm startet, kann auch der zu weckende Server variieren. Beispielsweise bekommt ein Rechner eine exe mit dem Namen '00_00_00_00_00_AA_somewhere_dynips_net.exe' und ein anderer eine exe mit dem Namen '00_00_00_00_00_BB_anywhere_dyndns_org.exe'. Hierbei handelt es sich um die MAC-Adresse und den Hostnamen des zu weckenden Rechners, den ich so bequem übergeben und ggf. ebenso bequem editieren könnte.
Aber ich verstehe nicht ganz wo der Vorteil ist - wenn du eh für jeden Rechner ein eigenes "Release" bauen musst, auch wenn es nur das binary umbenennen ist - dann kannst du doch auch gut einfach ein Configfile einpacken?
Idee:
Erstell ein ANT Script das dir aus einer build.properties mehrere Jars packt. Eins für jeden Rechner mit jeweils der nötigen Config Datei. Die lädst du dann als Resource über den classloader - fertig.
Oder noch einfacher du definierst eine Konstante und läßt ANT die beim build hart gegen die Mac ersetzen.
Ich kann in meiner JRE System Library leider keine Methode getClassPath() finden. Kannst Du mir die dazugehörige Klasse nennen?
Ein Test mit System.getProperty("java.class.path"); wollte schonmal nicht funktionieren. Die exe verweist dann auf die dazugehörige jar-Library (irgendwie auch nicht verwunderlich). Ist die dann nicht mehr relativ zur exe wirfts mir ein Laufzeitfehler.
Ein Test mit System.getProperty("java.class.path"); wollte schonmal nicht funktionieren. Die exe verweist dann auf die dazugehörige jar-Library (irgendwie auch nicht verwunderlich). Ist die dann nicht mehr relativ zur exe wirfts mir ein Laufzeitfehler.
Schau Dir noch die Methode getName() der Klasse File an. Dann mußt Du nicht mit Stringoperationen jonglieren und kannst Du auf die Angabe des Backslash verzichten, den es als Trenner in Pfaden ja nur unter Windows gibt. Ok, bei Dir geht zwar ohnehin um EXE-Dateien, aber getName() ist dennoch einfacher. (Btw. könnte ich meine eigene Methode dahingehend auch noch optimieren und getParent() verwenden.)
Klasse, dass es bei Java für alle Eventualitäten schon eine Methode zu geben scheint. Ich hatte bisher nur Erfahrung mit irgendwelchen EcmaScript-Ausformungen (JavaScript, ExtendScript, ActionScript), da muss(te) ich mir immer für die grundlegendsten Sachen eigene Methoden bauen.