Ich habe eine Java-JAR-Datei, die eine Textdatei enthält. Aus dem Java-Code innerhalb des Jar benutze ich JNA, um Funktionen in einer C-Bibliothek aufzurufen. Ich muss einen Dateipfad an die Textdatei zu einer der C-Funktionen übergeben, damit das C-Programm es lesen kann.Pfad zur Textdatei im Java-Jar an eine C-Bibliothek übergeben?
Da es das C-Programm und nicht das Java-Programm, das die Datei lesen muss, kann ich nicht einfach dies tun:
getClass().getResourceAsStream("MyFile.txt");
Das C-Programm ist nicht unter meiner Kontrolle, und es nicht versteht ein jar:file://
Pfad.
Wie kann das gemacht werden? Wird der Inhalt des Glases automatisch irgendwo extrahiert? Muss ich es irgendwo extrahieren? Wie kann ich das machen, wenn ich nicht sicher sein kann, dass ich überall Schreibrechte habe?
Wenn möglich, würde ich diese Datei irgendwo auf dem Dateisystem, nicht in einem Glas. Das würde Client-Code (Ihr C-Programm) leichter verständlich machen. Und eine Datei in einem Jar ist höchstwahrscheinlich etwas internes (Entwickler des Jar könnten sich nicht bewusst sein, dass diese Ressource von jemand anderem benutzt wird, was dazu führt, dass sie diese Datei umbenennen oder löschen, ohne Rücksicht auf anderen involvierten Code). Es würde auch die Aktualisierung der Datei erleichtern (Sie müssen kein Modul freigeben, um eine Konfigurationsdatei zu aktualisieren). – spi