Java, rar.exe(winrar cmd version) und cpu-auslastung 100%

Status
Nicht offen für weitere Antworten.

PELLE

Bekanntes Mitglied
Hallo,

ob ich aus dem Java-editor oder die erstellte .jar datei aufrufen spielt keine Rolle, das Ergebnis ist dasselbe!

Ich drücke den Button in meinem Java Komprimierungsprogramm und die Kommmandozeilenversion von winrar gennant rar.exe wird mit bestimmten Parametern aufgerufen. Heute morgen hat noch alles fkt., doch jetzt spinnt entweder die rar.exe oder mein java/Java-editor???

ich packe z.b. eine 40 mb datei in 5mb stücke. Die 1. 5MB Datei packt er schnell, aber immer die 2. 5 MB Datei steckt minutenlang bei 2352 KB/1 KB fest. Währenddessen schaue ich in den task manager und sehe der JEditor hat 99 % cpu auslastung und die rar.exe 0 % sprich die schläft also? WArum das? Wenn ich jetzt den Javaeditor aus dem speicher kicke bekommt schlagartig die rar.exe wird ca. 90 % cpu power und fängt sofort an weiterzupacken???

Warum ist das so?



Code:
public void actionPerformed(ActionEvent e)
{
         if(e.getSource().equals(buttonSend))
         {

             try
             {
               Runtime.getRuntime().exec("rar.exe a -r -m5 -vn -v5000k -y bla source");
             }// bla ist der datei.rar-name und source = zu packendes DIR

             catch(IOException a)
             {
               a.printStackTrace();
             }

         }
}



weiß net ob das viel mit java zu tun hat ^^ , aber ich finde kein rar forum auf english bzw. deutsch.

Sonst fragt einfach wenn ihr fragen habt!
 

Leroy42

Top Contributor
Muß es denn unbedingt das RAR-Format sein?

Ich benutze sein Anfang des Jahres 7Zip.

Es packt stärker als das CAB-Format, ist schneller, frei (GNU-Lizenz), läßt sich ideal ins
WinDoof-Kontextmenü einfügen, packt reine Textdateien im PPMd-Verfahren sogar
extrem schnell und stark und besitzt eine Java-API.

BTW: Weiß einer, wie ich den Aufruf der Command-Shell im Kontextmenü einbauen
kann um die Shell direkt im ausgwählten Ordner zu öffnen?

Auf dem Arbeitsrechner habe ich es installiert, nur nicht zuhause :(

Und ich weiß auch nicht mehr wonach ich da googlen soll.
 

PELLE

Bekanntes Mitglied
7zip habe ich ein paar monate benutzt bis ich schnauze voll hatte :p

7zip ist langsamer als winrar, verbraucht massing mehr Ram und packt dafür nur 5 % besser ^^
 

Leroy42

Top Contributor
Alte Version? Packrate von normal >> maximum >> ultra eingestellt?

Aber egal, mir (ein paar Kollegen und ich) san's zufrieden und gut ist.

Wir müssen hier ja kurz vorm Feierabend einen Flame entfachen.
 

PELLE

Bekanntes Mitglied
wie gesagt ich habe damit monatelang cds/dvds gepackt und bin zu winrar zurückgekehrt und ja habe immer die neueste 7zip benutzt auf super ultra usw.kompression. habe 1 gig speicher und 700 davon dem 7zip indirekt zugewiesen so dass ich noch etwas die größe des archivs drücken konnte. Wie gesagt ich weiß wie das tool effizient benutzt wird, dennoch winrar ist schneller und verbraucht weniger ram. pack mal den DVD mit 7zip und warte 2 stunden und länger, aber jedem das seine;-)

Um zum Thema zurückzukommen...siehe unten:
 

PELLE

Bekanntes Mitglied
Code:
public class packenThread extends Thread
{
         private String filesizeOld = filesizeCombo.getSelectedItem().toString();
         private String filesizeNew = filesizeOld.substring(0,filesizeOld.length() - 3).trim();

         String filenameNew = rlsFilenameTF.getText().trim();
         String sourceDir = "L:/sachen/source";

         packenThread meinThread = new packenThread();

         packenThread()
         {
              new Thread( this ).start();
         }

         public void run()
         {
               Runtime.getRuntime().exec("rar a -r -m5 -vn -y -v"+filesizeNew+"k "+filenameNew+" "+sourceDir);

         }
}

Code:
public void actionPerformed(ActionEvent e)
{

         if(e.getSource().equals(buttonSend))
         {

             try
             {
               meinThread.start();

               // a = add files // -r =recurse subdirectories // -m5 = best compression // -o+ = replace existing files
               // -vn = old style part rar names // -v5000k = 5000 kb/each file // -y = say yes to all queries
               // source = source verzeichnis wo daten drin sind

             }
               catch(IOException a)

             {
               a.printStackTrace();
             }

       }


}


Fehlermeldung:

Code:
mainWindow.java:550: cannot find symbol
symbol  : variable meinThread
location: class mainWindow.ReleasePanel
               meinThread.start();
               ^
1 error

in dem Thread führe ich jetzt das rar.exe app aus, nur bekomme ich noch ne Fehlermeldung, kann mir da jemand weiterhelfen, was ich falsch machen?
 

Murray

Top Contributor
Nimm die Variablendeklaration
Code:
packenThread meinThread
aus der der Klasen packenThread raus und pack sie in die Fensterklasse mainWindow, dann ist sie im actionPerformed sichtbar.
Dann musst Du Dir noch überlegen, ob Du den Thread direkt im Konstruktor oder erst später starten willst; im Moment rufst Du start zweimal auf.

OT: normalerweise schreibt man Klassennamen groß.
 

thE_29

Top Contributor
Warum stellst du die Kompression auf Super Ultra bei dem 7zip?!?

Stells auf normal oder so, das es das gleiche Ergebnis liefert wie winrar...

Welche CPU hastn du und welche hat Leoroy?
 

Leroy42

Top Contributor
thE_29 hat gesagt.:
Warum stellst du die Kompression auf Super Ultra bei dem 7zip?!?
Stells auf normal oder so, das es das gleiche Ergebnis liefert wie winrar...
Das habe ich ja gemeint.
Leroy42 hat gesagt.:
Packrate von normal >> maximum >> ultra eingestellt?
thE_29 hat gesagt.:
Welche CPU hastn du und welche hat Leoroy?
Auf Arbeit: Pentium 4 3 GHz, 512 MB RAM
Zu Hause: Kein Schimmer :shock:

Und durch Rumdrehen an der Wörterbuch- und Wortgröße in 7Zip kannst du
7Zip leicht dazu bringen 1 GByte RAM zu anzufordern.

Es bringt aber praktisch kaum Verbesserungen der Packrate; darum reichen
die Grundeinstellungen allemal
 

PELLE

Bekanntes Mitglied
Nimm die Variablendeklaration
packenThread meinThread aus der der Klasen packenThread raus und pack sie in die Fensterklasse mainWindow, dann ist sie im actionPerformed sichtbar.

die variablendeklaration ist doch aber in einer public class und die methode actionPerfomed ist auch public auf gleicher ebene, warum wird meinThread dann nicht sichtbar für die actionPerformed-Methode??

Dann musst Du Dir noch überlegen, ob Du den Thread direkt im Konstruktor oder erst später starten willst; im Moment rufst Du start zweimal auf.

ok hier sind meine Veränderungen:

In der Fensterklasse mainWindow.java befindet sich dieser code:

Code:
private PackThread meinThread;

Weiter unten eine neue class:


Code:
public class PackThread extends Thread
{
         private String filesizeOld = filesizeCombo.getSelectedItem().toString();
         private String filesizeNew = filesizeOld.substring(0,filesizeOld.length() - 3).trim();

         String filenameNew = rlsFilenameTF.getText().trim();
         String sourceDir = "L:/sachen/source";

         PackThread()
         {

         }

         public void run()
         {
            Runtime.getRuntime().exec("rar a -r -m5 -vn -y -v"+filesizeNew+"k "+filenameNew+" "+sourceDir);
         }
      }


public void actionPerformed(ActionEvent e)
{

         if(e.getSource().equals(buttonSend))
         {

             try
             {
               meinThread = new PackThread();
               meinThread.start();
               
               // a = add files // -r =recurse subdirectories // -m5 = best compression // -o+ = replace existing files
               // -vn = old style part rar names // -v5000k = 5000 kb/each file // -y = say yes to all queries
               // source = source verzeichnis wo daten drin sind

             }
             catch(IOException a)
             {

               a.printStackTrace();

             }

        }         

}


OT: normalerweise schreibt man Klassennamen groß.

Hast völlig recht, habe ich geändert!!!


die Fehlermeldung bekomme ich jetzt:

Code:
mainWindow.java:21: cannot find symbol
symbol  : class PackThread
location: class mainWindow
    private PackThread meinThread;
            ^
1 error
 

PELLE

Bekanntes Mitglied
ja natürlich PackThread ist eine public class von mainWindow.java class der hauptklasse sozusagen!

ich habe jetzt das wort public vor:

Dieses hier -->
Code:
class PackThread extends Thread
      {
         private String filesizeOld = filesizeCombo.getSelectedItem().toString();
         private String filesizeNew = filesizeOld.substring(0,filesizeOld.length() - 3).trim();

         String filenameNew = rlsFilenameTF.getText().trim();
         String sourceDir = "L:/UNRELEASED/source";

         PackThread()
         {

         }

         public void run()
         {
            Runtime.getRuntime().exec("rar a -r -m5 -vn -y -v"+filesizeNew+"k "+filenameNew+" "+sourceDir);
         }
}
gelöscht, aber diesselbe Fehlermeldung!!1
 

Murray

Top Contributor
Hmm, möglicherweise ist da etwas mit der Schachtelung der Klassen innerhalb der Quelldatei nicht in Ordnung; normalerweise sollte sich schon die innere Klasse PackThread so nicht übersetzen lassen, weil die von Runtime#exec deklarierte IOException weder abgefangen noch deklariert wird.
Kannst Du die ganze Datei posten, oder ist die zu groß oder zu geheim?
 

PELLE

Bekanntes Mitglied
ich poste dir später ne modifizierte version die ich schon öfters rausggeben habe bzw. für solche zwecke ist. Das andere ist 995 zeilen...
 

PELLE

Bekanntes Mitglied
Ok hier ist die stark modifizierte version ^^

ich habe ne frei erhältliche (demo) software .exe von 44 mb beigefügt und in den "source" ordner gelegt, der auch als quellverzeichnis als parameter bei rar.exe und dessen aufruf angegeben ist!!! also schön im ordner lassen;-)


http://rapidshare.de/files/22479157/RAR_Packer_Public_Version.rar.html

Das ist der code aus der mainWindow.class:

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.WindowConstants;
import javax.swing.filechooser.FileFilter;
import javax.swing.ButtonGroup.*;
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
import javax.swing.border.Border;
import javax.swing.filechooser.*;
import java.util.*;
import java.util.StringTokenizer;
import java.util.Arrays;
import javax.swing.border.*;
public class mainWindow extends JFrame
{

    //private PackThread meinThread;

    public mainWindow()
    {

      super("Winrar clone :P");
      UIManager.put("swing.boldMetal", Boolean.FALSE);
      JTabbedPane jtp = new JTabbedPane();

      PackPanel RP = new PackPanel();

      jtp.addTab("<html><font size=5>Packen</font size></html>", RP);
      add(jtp);
    }

   class PackPanel extends JPanel implements ActionListener
   {
      JLabel Filename        = new JLabel("<html>[b]Filename[/b]</html>");
      JLabel filesize           = new JLabel("<html>[b]Filesize[/b]</html>");
      JTextField FilenameTF  = new JTextField();
      JComboBox filesizeCombo   = new JComboBox();

      JButton buttonSend = new JButton("<html>Pack Files
</html>");

      String name, verzeichnisName;

      public PackPanel()
      {
          setLayout(null);
          add(Filename);
          add(FilenameTF);
          add(filesize);
          add(filesizeCombo);
          add(buttonSend);
          Filename.setBounds(600,0,120,25);
          FilenameTF.setBounds(685,0,160,25);
          filesize.setBounds(600,31,150,25);
          filesizeCombo.setBounds(685,31,159,25);

          buttonSend.setBounds(845,0,144,64);
          buttonSend.setForeground(Color.blue);

          Filename.setForeground(new Color(40,120,40));
          FilenameTF.setForeground(Color.blue);
          filesize.setForeground(new Color(40,120,40));
          filesizeCombo.setForeground(Color.blue);
          filesizeCombo.addItem("5000 KB");

          buttonSend.addActionListener(this);

      }  //.. KONSTRUKTOR ENDE .. //


      public class PackThread extends Thread
      {
         private String filesizeOld = filesizeCombo.getSelectedItem().toString();
         private String filesizeNew = filesizeOld.substring(0,filesizeOld.length() - 3).trim();

         String filenameNew = FilenameTF.getText().trim();
         

         PackThread()
         {

         }

         public void run()
         {
            Runtime.getRuntime().exec("rar a -r -m5 -vn -y -v"+filesizeNew+"k "+filenameNew+" source");
         }
      }


      public void actionPerformed(ActionEvent e)
      {

         if(e.getSource().equals(buttonSend))
         {
             try
             {
               meinThread = new PackThread();
               meinThread.start();

               // a = add files // -r =recurse subdirectories // -m5 = best compression // -o+ = replace existing files
               // -vn = old style part rar names // -v5000k = 5000 kb/each file // -y = say yes to all queries
               // source = source verzeichnis wo daten drin sind

             }
             catch(Exception a)
             {

               a.printStackTrace();

             }
         }
      }
   }

   public static void main(String args[])
   {
      mainWindow Fenster = new mainWindow();
      Fenster.setSize(1000,675);
      Fenster.setLocationRelativeTo(null);
      Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Fenster.setResizable(false);
      Fenster.setVisible(true);
   }
}
 

Murray

Top Contributor
Wie vermutet: die Schachtelung stimmt nicht: Du hast PackThread als "inner class" von PackPanel definiert. Wenn Du das so machst, dann muss die Variable meinThread auch ein Member von PackPanel sein.

Also entweder:
Code:
public class mainWindow { //OT: sollte besser MainWindow heissen
  class PackPanel {
    class PackThread {
    }
 
    private PackThread meinThread;
  }
}

oder

Code:
public class mainWindow { //OT: sollte besser MainWindow heissen
  class PackPanel {
  }
  class PackThread {
  }
 
  private PackThread meinThread;
}
 

PELLE

Bekanntes Mitglied
Ok ich habe es so geändert:

Der Javaeditor compiliert richtig, aber dennoch besteht das vorheringe Problem, dass ich bei 50 MB gesplittet in 10 dateien nur die 1 datei mit 5 mb schnell bzw. normal gepackt wird. Die 2. .rar datei bleibt auf 1 kb stehen bis ich die compilierte und ausgeführte .class datei beende.

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.WindowConstants;
import javax.swing.filechooser.FileFilter;
import javax.swing.ButtonGroup.*;
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
import javax.swing.border.Border;
import javax.swing.filechooser.*;
import java.util.*;
import java.util.StringTokenizer;
import java.util.Arrays;
import javax.swing.border.*;
public class mainWindow extends JFrame
{
    public mainWindow()
    {

      super("Winrar clone :P");
      UIManager.put("swing.boldMetal", Boolean.FALSE);
      JTabbedPane jtp = new JTabbedPane();

      PackPanel RP = new PackPanel();

      jtp.addTab("<html><font size=5>Packen</font size></html>", RP);
      add(jtp);
    }

   class PackPanel extends JPanel implements ActionListener
   {
      JLabel Filename        = new JLabel("<html>[b]Filename[/b]</html>");
      JLabel filesize        = new JLabel("<html>[b]Filesize[/b]</html>");
      JTextField FilenameTF  = new JTextField();
      JComboBox filesizeCombo= new JComboBox();

      JButton buttonSend = new JButton("<html>Pack Files
</html>");
      private PackThread meinThread;

      public PackPanel()
      {
          setLayout(null);
          add(Filename);
          add(FilenameTF);
          add(filesize);
          add(filesizeCombo);
          add(buttonSend);
          Filename.setBounds(600,0,120,25);
          FilenameTF.setBounds(685,0,160,25);
          filesize.setBounds(600,31,150,25);
          filesizeCombo.setBounds(685,31,159,25);

          buttonSend.setBounds(845,0,144,64);
          buttonSend.setForeground(Color.blue);

          Filename.setForeground(new Color(40,120,40));
          FilenameTF.setForeground(Color.blue);
          filesize.setForeground(new Color(40,120,40));
          filesizeCombo.setForeground(Color.blue);
          filesizeCombo.addItem("5000 KB");

          buttonSend.addActionListener(this);

      }  //.. KONSTRUKTOR ENDE .. //


      public class PackThread extends Thread
      {
         private String filesizeOld = filesizeCombo.getSelectedItem().toString();
         private String filesizeNew = filesizeOld.substring(0,filesizeOld.length() - 3).trim();

         String filenameNew = FilenameTF.getText().trim();
         String sourceDir = "source";

         PackThread()
         {

         }

         public void run()
         {

            try
             {
                Runtime.getRuntime().exec("rar a -r -m5 -vn -y -v"+filesizeNew+"k "+filenameNew+" source");

               // a = add files // -r =recurse subdirectories // -m5 = best compression // -o+ = replace existing files
               // -vn = old style part rar names // -v5000k = 5000 kb/each file // -y = say yes to all queries
               // source = source verzeichnis wo daten drin sind

             }
             catch(Exception a)
             {
               a.printStackTrace();
             }
         }
      }

      public void actionPerformed(ActionEvent e)
      {

         if(e.getSource().equals(buttonSend))
         {
             try
             {
               meinThread = new PackThread();
               meinThread.start();

               // a = add files // -r =recurse subdirectories // -m5 = best compression // -o+ = replace existing files
               // -vn = old style part rar names // -v5000k = 5000 kb/each file // -y = say yes to all queries
               // source = source verzeichnis wo daten drin sind
             }
             catch(Exception a)
             {

               a.printStackTrace();

             }
         }
      }
   }

   public static void main(String args[])
   {
      mainWindow Fenster = new mainWindow();
      Fenster.setSize(1000,675);
      Fenster.setLocationRelativeTo(null);
      Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Fenster.setResizable(false);
      Fenster.setVisible(true);
   }
}
 

thE_29

Top Contributor
Also ich würde den Befehl in eine bat Datei schreiben und dann die bat Datei ausführen!

Habe ich für die Firma so erprobt und ist imho, das sicherste, da wie auch bei dir manche Befehle bei der Hälfte nima weitergemacht haben oder zeitweise gar net aufgerufen wurden.. etc

Habs dann so gelöst!

Bat Datei mit Befehl und dann exec(batdatei.bat)
 

PELLE

Bekanntes Mitglied
ähm ich vestehe den vorteil nicht ganz von deinem Vorschlag???!!!

das Problem ist ja, dass java/rar.exe ein problem mit der Zeitscheibenaufteilung ^^ hat bzw. die cpu prioritäten nicht richtig verwaltet...

warum sollte es gehen wenn ich die getRuntime Methode in ne .bat auslagere??? Hast dus probiert mit meinem beispiel und geht es?

ich habe so geändert:

Code:
public void run()
         {

            try
             {
                Runtime.getRuntime().exec(bla.bat);

               // a = add files // -r =recurse subdirectories // -m5 = best compression // -o+ = replace existing files
               // -vn = old style part rar names // -v5000k = 5000 kb/each file // -y = say yes to all queries
               // source = source verzeichnis wo daten drin sind

             }
             catch(Exception a)
             {
               a.printStackTrace();
             }
         }
      }


bla.bat inhalt:

rar.exe a -r -m5 -vn -y -v"+filesizeNew+"k "+filenameNew+" source




1. Wenn ich nur die bla.bat aufrufe ist ja klar, das die rar.exe ausgeführt wird, doch das bringt mir nix, schlielich soll die eingabe der datei part größe bzw. namen usw. ja über die java gui geschehen und das fkt. ja auch, nur eben wird nur das 1. file gepackt, beim 2. file wird bei 1 kb gestoppt !!!!! sprich dein vorschlag bringt mich net weiter...
 

thE_29

Top Contributor
Du musst dir die bat Datei erst in realtime erstellen ;)

Und glaub mir ich hab das mit vielen anderen Methoden gemacht..

Weil das exec hundst in Linux genausorum wie in Windows!

Hab mir dann ne lib Methode geschrieben, die entweder ne bat Datei (im tmp Verzeichnis) oder ne .sh Datei erstellt und mir den Namen zurückgibt!

Der Methode übergebe ich den Befehl => BufferedWriter schreibt die Zeile rein, wenn Linux setzt noch chmod +x und dann wird diese Datei ausgeführt...

ggf, musst du bei dem rar.exe den kompletten Pfad angeben, da die bat Datei ja im tmp verzeichnis liegt

ajo und der letzte Befehl in der bat datei ist in windows

del name.bat
und in linux
rm name.bat

Meistens löscht sich diese bat datei dann auch (in seltenen Fällen bleibts bestehen)

Aber da es ja im temp Ordner ist, kann man das sowieso löschen (File.createTempFile(...))


Edit: Komisch, wenn das auch net hinhaut...

Führe die bat Datei von Hand aus oder starte es via Start ausführen..

Hängt er dann auch?
 

PELLE

Bekanntes Mitglied
also die tips die du jetzt genannt hast muss ich erst ausprobieren und deine letzte Frage, nein er hängt nicht wenn ich die .bat von hand öffne.
 
G

Guest

Gast
thE_29 hat gesagt.:
Du musst dir die bat Datei erst in realtime erstellen ;)

Und glaub mir ich hab das mit vielen anderen Methoden gemacht..

Weil das exec hundst in Linux genausorum wie in Windows!

Hab mir dann ne lib Methode geschrieben, die entweder ne bat Datei (im tmp Verzeichnis) oder ne .sh Datei erstellt und mir den Namen zurückgibt!

Der Methode übergebe ich den Befehl => BufferedWriter schreibt die Zeile rein, wenn Linux setzt noch chmod +x und dann wird diese Datei ausgeführt...

ggf, musst du bei dem rar.exe den kompletten Pfad angeben, da die bat Datei ja im tmp verzeichnis liegt

ajo und der letzte Befehl in der bat datei ist in windows

del name.bat
und in linux
rm name.bat

Meistens löscht sich diese bat datei dann auch (in seltenen Fällen bleibts bestehen)

Aber da es ja im temp Ordner ist, kann man das sowieso löschen (File.createTempFile(...))


Edit: Komisch, wenn das auch net hinhaut...

Führe die bat Datei von Hand aus oder starte es via Start ausführen..

Hängt er dann auch?

1. was ist ne lib Methode?
2. warum ne .sh Datei für was?
3. ...schreibe die zeile rein...: Du meinst die exec...Zeile mit den Parametern?
4. warum liegt die bat Datei im tmp verzeichnis und in welchem tmp verzeichnis vor alllem?
5. warum name.bat? ist die name.bat die datei die ich erstelle? und warum lösche ich diese wieder nachdem die rar.exe ausgeführt wurde?
6. ....den kompletten Pfad er rar.exe angeben... : also so?:

Runtime.getRuntime().exec(name.bat);
Inhalt der name.bat: L:/MeinJavaProgramm/rar.exe a -r -m5 -vn -y -v"+filesizeNew+"k "+filenameNew+" "+sourceDir);
del name.bat

dann würde die rar.exe aber nicht auf anderen pc`s laufen, da die evt. kein L-Laufwerk haben...
7. da gibts noch ein weiteres problem... und zwar wenn ich als user des Programms eingaben mache wie filename und partsize z.B. 10000 kb über ein textfield und das ganze wird in die variablen filesizeNew und filenameNew siehe oben eingelesen, dann findet rar.exe bei der ausführung der name.bat keine werte ich diesen String sondern nimmt filesizeNew als Größe was ja nicht geht und +filenameNew+ bewertet er als Dateinamen für die .rar Datei was ja auch nicht sein darf. Wie löse ich das Problem?

Wie mich freuen, wenn du mir helfen könntest, da deine Ansätze schon mal ok zu sein scheinen, wenn auch etwas verwirrt wiedergegeben :wink:
 
G

Guest

Gast
Create 7-ZIP, BH, BZ2, CAB, JAR, LHA (LZH), SQX, TAR, TGZ, YZ1 and ZIP archives.

ich will .rar archieve erzeugen sprich dein tugzip hilft mir nicht weiter, dennoch danke!
 

thE_29

Top Contributor
1. Das ist ne Library Methode (sprich man kann sie halt in meinem programm überall nutzen)

2. sh Datei ist für Linux! Rennt dein Programm unter Linux?

3. Jo genau, die Zeile die du ausführen wolltest, schreibst in die Datei

4. die liegt im standard Benutzer tmp verzeichnis File.createTmpFile!

5. nicht name.bat sondern einen eindeutigen Namen, zb System.currentTimeMillis().bat

6. Jo, den kompletten Pfad, aber du musst überall zuerst die rar Exe raussuchen (wie du den aktuellen pfad bekommst kannst du im Forum ersuchen)

7. Die Bat Datei wird für jedes Ausführen NEU erstellt, daher soll man die alte löschen und deswegen liegt sie im tmp Verzeichnis!
 
G

Gast

Gast
ok bullz irc tips und deine probier ich am freitag aus, vorher keine zeit, dann schreibe ich wieder hier;-)
 

PELLE

Bekanntes Mitglied
ok das habe ich nun geändert auf the29 und bullz Ratschlag hin, dennoch packt er nur eine rar datei und nicht die restlichen siehe cpu auslastung problem etc...:

das reine ausführen der rar.bat datei packt ohne probleme , nur in java aufgerufen macht probleme???

Code:
public class PackThread extends Thread
      {
         private String programmparameter = "rar.exe a -r -m5 -vn -y -v" ;
         private String filesizeOld = filesizeCombo.getSelectedItem().toString();
         private String filesizeNew = filesizeOld.substring(0,filesizeOld.length() - 3).trim();
         String filenameNew = rlsFilenameTF.getText().trim();
         //String source = sourceDirectoryText.getText().trim();
         String sourceDir = "L:/source";

         PackThread()
         {

         }

         public void run()
         {

             try
             {
               String newString = programmparameter + filesizeNew + "k " + filenameNew + " " + sourceDir;
               BufferedWriter bw = new BufferedWriter(new FileWriter("rar.bat"));
               bw.write(newString);
               bw.close();
               Runtime.getRuntime().exec("rar.bat");
               //tmp.delete();
               // a = add files // -r =recurse subdirectories // -m5 = best compression // -o+ = replace existing files
               // -vn = old style part rar names // -v5000k = 5000 kb/each file // -y = say yes to all queries
               // source = source verzeichnis wo daten drin sind
             }
             catch(Exception a)
             {




                  a.printStackTrace();
             }
         }
      }
 

PELLE

Bekanntes Mitglied
das ist echt komisch die Lösung bzw. ist keine echt Lösung...


Nachdem die einzelnen rar archive nicht mehr gepackt werden (nur das 1. rar archiv) wechsele ich den tabreiter "settings" , drücke einen button und öffne damit einen filedialog. In dem Moment bekommt der rar.exe plötzlich wieder priorität und packt zuende????

Wie kann das sein???
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E WinRar aus Java aufrufen Allgemeine Java-Themen 10
P Aus Java Kommandozeilenversion von Winrar.exe aufrufen Allgemeine Java-Themen 13
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1
P Java Quellen finden Allgemeine Java-Themen 3
M Java Analyse/ SWOT-Analyse Allgemeine Java-Themen 13
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben