2012-04-11 3 views
1

У меня есть приложение, которое использует 7zip для распаковки файла. Код, который я использую следующее:Java - Running 7zip

Runtime prog = Runtime.getRuntime(); 
Process proc = prog.exec(System.getenv("ProgramFiles").concat("\\7-Zip\\7z x " + "\""+path+"\""+ " -o"+Values.temp_path)); 

InputStream stderr = proc.getErrorStream(); 
InputStream instr = proc.getInputStream(); 
InputStreamReader isr = new InputStreamReader(stderr); 
InputStreamReader insr = new InputStreamReader(instr); 
BufferedReader br = new BufferedReader(isr); 
BufferedReader br2 = new BufferedReader(insr); 
String line = null; 
String line2 = null; 

while ((line = br.readLine()) != null & (line2 = br2.readLine()) != null){} 

int exitVal = proc.waitFor(); 

Где путь расположения файла и TEMP_PATH место, где он будет распакован.

Хотя это отлично работает на моем компьютере, у меня есть коллеги, которые получают ошибки при запуске этого же приложения.

В моем компьютере значение переменной exitVal установлено в 0 методом waitFor. На другом компьютере я видел, что эта переменная установлена ​​в 1 (ERROR_INVALID_FUNCTION). Приложение одинаково на обоих компьютерах, как с помощью win xp, так и с той же версией 7zip, что еще я могу пропустить?

Благодарим за помощь!

EDIT:

я нашел разницу между 2 компьютерами. В той, которая работает, установлена ​​java 7, а у одной из них есть java 6

+2

Почему вы не использовать 7-Zip [SDK] (HTTP: // WWW 0,7-zip.org/sdk.html)? –

ответ

3

Если вы используете zip-файлы, лучше взгляните на ZipInputStream и ZipOutputStream. Таким образом вам не придется полагаться на инструмент, который может или не может быть там.

Если вы используете .7z файлы (сжатые с LZMA), есть библиотека с именем lzmajio, которая также даст вам потоки java.


Ресурсы:

+0

Я использую 7-zip-файлы, я смотрю, как использовать 7-zip SDK, никогда не делал noyhing, как это раньше :) Спасибо! – dedalo