Moin,
Ganz dumme Frage: Ich habe hier ein Java-Classfile rumzuliegen, welches auf ein daneben liegendes JAR-File aufbaut. In der Java-manpage steht daß man nur ein Class-File oder ein jar-File angeben kann. java [ options ] class [ argument ... ] java [ options ] -jar file.jar [ argument ... ] (j2re-1.3.1). Deswegen habe ich sowas wie CLASSPATH ausprobiert:
#!/bin/sh CLASSPATH=/home/hille/latex/iText/t1/iText.jar java encrypt_pdf presentations.pdf presentations1.pdf <arguments>
kriege aber nur:
PDF document encryptor Reading presentations.pdf Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfReader at encrypt_pdf.main(encrypt_pdf.java:56) drachi:[t1] >
PEBCAK?
H.
Am Sat den 05 Apr 2003 um 03:50:08PM +0200 schrieb Hilmar Preusse:
Moin,
Ganz dumme Frage: Ich habe hier ein Java-Classfile rumzuliegen, welches auf ein daneben liegendes JAR-File aufbaut. In der Java-manpage steht daß man nur ein Class-File oder ein jar-File angeben kann.
Richtig.
java [ options ] class [ argument ... ] java [ options ] -jar file.jar [ argument ... ]
(j2re-1.3.1). Deswegen habe ich sowas wie CLASSPATH ausprobiert:
#!/bin/sh CLASSPATH=/home/hille/latex/iText/t1/iText.jar java encrypt_pdf presentations.pdf presentations1.pdf <arguments>
Sollte so funktionieren, wenn in iText.jar tatsächlich alles notwendige drin steckt.
kriege aber nur:
PDF document encryptor Reading presentations.pdf Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfReader at encrypt_pdf.main(encrypt_pdf.java:56) drachi:[t1] >
Wenn du in das jar File reinschaust (jar ist lediglich ein zip Archiv mit einem MANIFEST File) muß die angemeckerte Datei auftauchen.
andre
On 06.04.03 Andre Schulze (as8@rcs.urz.tu-dresden.de) wrote:
Moin,
#!/bin/sh CLASSPATH=/home/hille/latex/iText/t1/iText.jar java encrypt_pdf presentations.pdf presentations1.pdf <arguments>
Sollte so funktionieren, wenn in iText.jar tatsächlich alles notwendige drin steckt.
Hmm, dachte ich auch.
kriege aber nur:
PDF document encryptor Reading presentations.pdf Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfReader at encrypt_pdf.main(encrypt_pdf.java:56) drachi:[t1] >
Wenn du in das jar File reinschaust (jar ist lediglich ein zip Archiv mit einem MANIFEST File) muß die angemeckerte Datei auftauchen.
OK, das wußte ich auch vorher: Ich hab da reingeschaut und in der "Verzeichnis"struktur com/lowagie/text/pdf gibts wirklich ein File PdfReader.class . Den Quellcode von encrypt_pdf.class hab ich vorzuliegen und da steht am Anfang drin:
import com.lowagie.text.*; import com.lowagie.text.pdf.*; import java.io.*; import java.util.HashMap;
Ja, wie soll ich das verstehen? Er kann das File offenbar stat'en, sonst würde er nicht versuchen es zu lesen aber scheitert dann? Folgendes funktioniert:
basedir=/home/hille/latex/iText/t1 CLASSPATH=$basedir/iText.jar export CLASSPATH java com.lowagie.tools.encrypt_pdf presentations.pdf presentations1.pdf etc.
Dabei wird aber offensichtlich die Klasse encrypt_pdf verwendet, die im JAR-File selber drinsteckt (kann man die irgendwie ersetzen?). In deren Sourcefile steht nur:
package com.lowagie.tools; import com.lowagie.text.pdf.PdfEncryptor; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfWriter;
und es tut. Nächster Versuch mit dem externen encrypt_pdf:
basedir=/home/hille/latex/iText/t1 CLASSPATH=$basedir/iText.jar:$CLASSPATH export CLASSPATH java encrypt_pdf presentations.pdf presentations1.pdf test master 10100000 40 test test1
PDF document encryptor Reading presentations.pdf Writing presentations1.pdf Exception in thread "main" java.lang.NoSuchMethodError at encrypt_pdf.main(encrypt_pdf.java:61)
Er scheint ganz gut loszulaufen scheitert aber dann. Der passende Code lautet
PdfEncryptor.encrypt(reader, new FileOutputStream(args[OUTPUT_FILE]),
als ob er auf die Standard-Java Libs nicht mehr zugreifen kann...
Any ideas?
Hilmar
On Sat, Apr 05, 2003 at 03:50:08PM +0200, Hilmar Preusse wrote:
Moin,
Ganz dumme Frage: Ich habe hier ein Java-Classfile rumzuliegen, welches auf ein daneben liegendes JAR-File aufbaut. In der Java-manpage steht daß man nur ein Class-File oder ein jar-File angeben kann. java [ options ] class [ argument ... ] java [ options ] -jar file.jar [ argument ... ] (j2re-1.3.1). Deswegen habe ich sowas wie CLASSPATH ausprobiert:
#!/bin/sh CLASSPATH=/home/hille/latex/iText/t1/iText.jar java encrypt_pdf presentations.pdf presentations1.pdf <arguments>
Es fehlt noch: export CLASSPATH
Ansonsten wird die Umgebungsvariable nicht an Kind-Prozesse weitergegeben.
Test: FOO=bar echo $FOO --> bar bash echo $FOO --> nichts
Gruß,
Thomas
On 06.04.03 Thomas Guettler (guettli@thomas-guettler.de) wrote:
Moin,
Es fehlt noch: export CLASSPATH
Ansonsten wird die Umgebungsvariable nicht an Kind-Prozesse weitergegeben.
drachi:[t1] >./ppower4 + basedir=/home/hille/latex/iText/t1 + CLASSPATH=/home/hille/latex/iText/t1/iText.jar + export CLASSPATH + echo /home/hille/latex/iText/t1/iText.jar /home/hille/latex/iText/t1/iText.jar + java encrypt_pdf presentations.pdf presentations1.pdf test master 10100000 128 Exception in thread "main" java.lang.NoClassDefFoundError: encrypt_pdf
Das Skript dazu:
#!/bin/sh set -x basedir=/home/hille/latex/iText/t1 CLASSPATH=$basedir/iText.jar export CLASSPATH echo $CLASSPATH java encrypt_pdf presentations.pdf presentations1.pdf test master 10100000 128
Nein, nichts. Sorry.
H.
lug-dd@mailman.schlittermann.de