Hallo Leute,
ich stehe vor dem Problem PDF-Resourcen zu laden. Und zwar habe ich das einfach gemacht über Dateizugriff mit "./docs/meinpdf.pdf". Funktioniert wunderbar.
Jetzt wird die Anwendung über das Startmenü gestartet und "." ist ein ganz anderes Verzeichnis.
Kann ich das aktuelle Verzeichnis evtl irgendwie programmatisch auf das Verzeichnis der auszuführenden Jar setzen?
Wenn nicht war mein anderer Ansatz die PDFs über den Classloader zu laden, als Tempfile zu speichern und dann mit dem Acrobat Reader zu öffnen.
Problem hierbei ist aber, dass das Tempfile irgendwie beschädigt scheint oder noch ein Filehandle hat:
mit
Danach
klappt nicht. Datei scheint beschädigt oder noch irgendein Handle darauf.
Was mache ich falsch?
Die Dateien (auch mit EXE probiert) sind vorhanden und haben die richtige Größe.
Wenn ich das TempFile nicht automstisch löschen lasse, dann ist die Datei gültig.
Muss da evtl ein hack her wie z.b. den Thread kurz auf sleep() setzen oder so?
Das hässliche Öffnen des Acrobat Readers ist wegen der NamedDest notwendig. Es sei denn auch hier kann mir jemand weiterhelfen. Siehe auch:
http://www.java-forum.org/allgemeine-java-themen/98594-pdf-lesezeichen-nameddest-oeffnen.html
nachtrag:
Als einfacher fände ich es, dass ich die PDFs gar nicht ins JAR hinzufüge und eben das Arbeitsverzeichnis auf das ausführende JAR gelenkt werden kann. Wie mach ich das? Geht das irgendwie über den Classpath? Problem, dass ich hier ja gar kein Package habe.
ich stehe vor dem Problem PDF-Resourcen zu laden. Und zwar habe ich das einfach gemacht über Dateizugriff mit "./docs/meinpdf.pdf". Funktioniert wunderbar.
Jetzt wird die Anwendung über das Startmenü gestartet und "." ist ein ganz anderes Verzeichnis.
Kann ich das aktuelle Verzeichnis evtl irgendwie programmatisch auf das Verzeichnis der auszuführenden Jar setzen?
Wenn nicht war mein anderer Ansatz die PDFs über den Classloader zu laden, als Tempfile zu speichern und dann mit dem Acrobat Reader zu öffnen.
Problem hierbei ist aber, dass das Tempfile irgendwie beschädigt scheint oder noch ein Filehandle hat:
Java:
String path = "docs/meinpdf.pdf";
InputStream is = ClassLoader.getSystemResourceAsStream(path);
File tempFile = File.createTempFile("temp", ".pdf");
// tempFile.deleteOnExit();
FileOutputStream os=new FileOutputStream(tempFile);
copy(is, os);
Java:
public static void copy( InputStream in, OutputStream out ) throws IOException {
byte[] buffer = new byte[1024];
for ( int len; (len = in.read(buffer)) != -1; )
out.write( buffer, 0, len );
}
Danach
Java:
Runtime.getRuntime().exec("cmd.exe /c startacrord32.exe /A \"nameddest=" + namedDest+ "\" \"" +
tempFile.getAbsolutePath() + "\");
Was mache ich falsch?
Die Dateien (auch mit EXE probiert) sind vorhanden und haben die richtige Größe.
Wenn ich das TempFile nicht automstisch löschen lasse, dann ist die Datei gültig.
Muss da evtl ein hack her wie z.b. den Thread kurz auf sleep() setzen oder so?
Das hässliche Öffnen des Acrobat Readers ist wegen der NamedDest notwendig. Es sei denn auch hier kann mir jemand weiterhelfen. Siehe auch:
http://www.java-forum.org/allgemeine-java-themen/98594-pdf-lesezeichen-nameddest-oeffnen.html
nachtrag:
Als einfacher fände ich es, dass ich die PDFs gar nicht ins JAR hinzufüge und eben das Arbeitsverzeichnis auf das ausführende JAR gelenkt werden kann. Wie mach ich das? Geht das irgendwie über den Classpath? Problem, dass ich hier ja gar kein Package habe.
Zuletzt bearbeitet: