Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 24 von 24

Thema: Systemaufruf

  1. #16
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    So ungefaehr:
    String[] arg = {"pdflatex","test2.tex"};
    Process p = RT.exec(arg);

    if( p.waitfor() == 0 )
    System.out.println( "pdflatex ok" );
    else {
    System.out.println( "pdflatex error: " + p.exitValue );
    System.exit( p.exitValue );
    }
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  2. #17
    Registrierter Benutzer
    Registriert seit
    17.06.2006
    Beiträge
    61
    hallo
    kann bitte mal jemand testen, ob das so funktioniert, das wäre echt lieb..
    bei mir funktioniert es bis zum ps2pdf-aufruf, dass dieser aufruf nicht geht, liegt bei mir aber daran, dass er auch ohne java nicht funktioniert.

    public class Pdf {
    static Runtime RT=null;
    static Process PR=null;

    public static void pdferstellen(){
    RT=Runtime.getRuntime();
    try{

    String[] arg = {"latex","test2"};
    RT.exec(arg);
    String[] args={"dvips", "test2.dvi"};
    RT.exec(args);
    String[] argsz={"ps2pdf", "test2.ps"};
    RT.exec(argsz);
    /*if(PR.waitFor()==0){
    System.out.println("PDF-Datei erstellt");

    }
    else {
    System.out.println( "pdflatex error: " + PR.exitValue() );
    System.exit( PR.exitValue() );
    }*/

    }
    catch(Exception e){
    System.out.println("Fehler:"+e.toString());
    }
    System.exit( 0 );
    }
    public static void main (String args[]){
    pdferstellen();
    }
    }


    vielen dank, katrin

  3. #18
    Registrierter Benutzer
    Registriert seit
    17.06.2006
    Beiträge
    61
    hallo
    da ich den zweiten aufruf erst ausführen sollte wenn der erste beendet ist, dachte ich ich könnte das mit der if-abfrage machen.
    allerdings bekomme ich jetzt eine fehlermeldung , die mir nix sagt. Fehler:java.lang.NullPointerException

    d.h ja er müsste gar nicht erst in den try-block gehen, aber ohne der if-Abfrage führt er die proesse doch durch....

    warum übergebe ich eigentlich dem exit() 0, ich habe das irgendwie so verstanden, dass diese methode mir diesen wert zurück gebt, jenachdem ob der prozess erfolgreich war?

    gruß katrin

    public class Pdf extends Ausgabe {
    static Runtime RT=null;
    static Process PR=null;

    public static void pdferstellen(){
    RT=Runtime.getRuntime();
    try{

    String[] arg = {"latex","test3"};
    RT.exec(arg);
    if(PR.waitFor()==0){
    String[] args={"dvips", "test3.dvi"};
    RT.exec(args);

    }
    else {
    System.out.println( "latex error: " + PR.exitValue() );
    System.exit( PR.exitValue() );
    }

    }
    catch(Exception e){
    System.out.println("Fehler:"+e.toString());
    }
    System.exit( 0 );
    }
    public static void main (String args[]){
    pdferstellen();
    }
    }

  4. #19
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von blaurot
    Fehler:java.lang.NullPointerException
    Naja - das ist eine der häufigsten Fehlermeldungen und bedeutet, dass du auf irgend ein Objekt zugreifen möchtest, das nicht initialisiert wurde...

    Mal die entsprechende Zeile genauer anschauen,

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  5. #20
    Registrierter Benutzer
    Registriert seit
    26.05.2006
    Beiträge
    879
    Zitat Zitat von blaurot
    hallo
    da ich den zweiten aufruf erst ausführen sollte wenn der erste beendet ist, dachte ich ich könnte das mit der if-abfrage machen.
    allerdings bekomme ich jetzt eine fehlermeldung , die mir nix sagt. Fehler:java.lang.NullPointerException

    d.h ja er müsste gar nicht erst in den try-block gehen, aber ohne der if-Abfrage führt er die proesse doch durch....

    warum übergebe ich eigentlich dem exit() 0, ich habe das irgendwie so verstanden, dass diese methode mir diesen wert zurück gebt, jenachdem ob der prozess erfolgreich war?

    public class Pdf extends Ausgabe {
    static Runtime RT=null;
    static Process PR=null;
    danach wird PR doch gar nicht wieder benutzt ...

    String LArg = "\\batchmode \\input test3.tex";
    String[] arg = {"latex", LArg};
    PR=RT.exec(arg);
    if(PR.waitFor()==0){ System.out.println("dvi-Datei erstellt"); }
    else { System.out.println( "LaTeX error: " + PR.exitValue() );
    System.exit( PR.exitValue() ); }

    rc

  6. #21
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von blaurot
    Fehler:java.lang.NullPointerException
    Es fehlt die Zuweisung auf PR, daher ist es null

    warum übergebe ich eigentlich dem exit() 0, ich habe das irgendwie so verstanden, dass diese methode mir diesen wert zurück gebt, jenachdem ob der prozess erfolgreich war?
    System.exit gibt den übergebenen Wert am Programmende an den Aufrufer des Programms zurück, damit der eventuell je nach Wert anders reagieren kann.

    Häufigster Anwendungsfall ist die Abarbeitung mehrerer zusammenhängender Befehle in einem Script bzw einer Batchdatei, wo abgebrochen werden soll, wenn einer der Verarbeitungsschritte nicht geklappt hat.

    Übrigens, falls das Ziel deines Programms die Generierung eines PDF aus einer Latexdatei ist, sollte das doch viel einfacher in einem Schritt mittels pdflatex gehen, oder?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #22
    Registrierter Benutzer
    Registriert seit
    17.06.2006
    Beiträge
    61
    hallo
    wahrscheinlich habt ihr recht und ich mache es zu kompliziert mit mehreren prozessen.
    ich habe es jetzt nochmal mit der pltx.bat gemacht, jetzt habe ich nur das problem, das ich es nicht testen kann, weil mein ps2pdf nicht funktioniert(deswegen war ich auch auf die mehreren prozesse umgestiegen...)
    mit pdflatex kann man dies nicht machen, da meine tex-datei balkendiagramme enthält.
    ich habe mein programm trotzdem laufen lassen, kam auch keine fehlermeldung. aber da inm if und im else teil eine println-anweisung steht, müsste er doch auf jeden fall was ausgeben, es kommt aber garnix. das finde ich sehr merkwürdig.
    gruß katrin

    public class Pdf2 {
    static Runtime RT=null;
    static Process PR=null;

    public static void pdferstellen(){
    RT=Runtime.getRuntime();
    try{

    String[] arg = {"pltx.bat","test3"};
    PR=RT.exec(arg);
    if(PR.waitFor()==0){
    System.out.println("Pdf-Datei erstellt");
    }
    else {
    System.out.println( "latex error: " + PR.exitValue() );
    System.exit( PR.exitValue() );
    }

    }
    catch(Exception e){
    System.out.println("Fehler:"+e.toString());
    }
    System.exit( 0 );
    }
    public static void main (String args[]){
    pdferstellen();
    }



    }

  8. #23
    Registrierter Benutzer
    Registriert seit
    26.05.2006
    Beiträge
    879
    Zitat Zitat von blaurot
    hallo
    wahrscheinlich habt ihr recht und ich mache es zu kompliziert mit mehreren prozessen.
    ich habe es jetzt nochmal mit der pltx.bat gemacht, jetzt habe ich nur das problem, das ich es nicht testen kann, weil mein ps2pdf nicht funktioniert(deswegen war ich auch auf die mehreren prozesse umgestiegen...)
    mit pdflatex kann man dies nicht machen, da meine tex-datei balkendiagramme enthält.
    ich habe mein programm trotzdem laufen lassen, kam auch keine fehlermeldung. aber da inm if und im else teil eine println-anweisung steht, müsste er doch auf jeden fall was ausgeben, es kommt aber garnix. das finde ich sehr merkwürdig.
    String LArg = "\\batchmode \\input test3.tex";
    String[] arg = {"latex", LArg};

    hatte ich dir doch extra geschrieben. Ansonsten hängt doch sofort das System, wenn TeX einen Fehler entdeckt und auf eine Eingabe wartet ...

    angesehen davon verstehe ich deinen ganzen Aufstand nicht. Wenn dein ps2pdf nicht geht, dann ist dein GhostScript im Eimer, denn ps2pdf ist nichts weiter als ein Skript dafür. Installiere das aktuelle ghostscript und hoe dir ps2pdf (bei MiKTEX ist alles dabei) und fertig ist ...

    rc

  9. #24
    Registrierter Benutzer
    Registriert seit
    08.08.2006
    Beiträge
    12
    Vielleicht hilft dir ja auch dieser Thread weiter:
    http://www.mrunix.de/forums/showthread.php?p=211428

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •