У меня проблема с Java Runtime.getRuntime().exec()
. Я запускаю свое java-приложение в Linux, и мне просто нужно выполнить основную задачу: скопировать и переименовать файл с помощью команды cp
. Однако, похоже, это не работает.
Это мой фрагмент кода для вызова Runtime.getRuntime().exec()
:
String command = "cp -f '" + old_path + "' " + song_info[6] + ".mp3";
System.out.println(command);
log.info(command);
try{
p = Runtime.getRuntime().exec(command);
int returnCode;
try {
returnCode = p.waitFor();
System.out.println("Return code = " + returnCode);
} catch (InterruptedException ex) {
java.util.logging.Logger.getLogger(Import.class.getName()).log(Level.SEVERE, null, ex);
}
} catch(IOException e){log.error(e);}
Когда я запускаю приложение Java, команда для каждого цикла выглядит примерно так
cp -f '/temp_storage/LoveSongs/28.I miss you.mp3' /music_storage/data/0/0/1/108.mp3
Если я копирую эту строку журнала и запускаю ее в командной строке, все работает отлично. Однако результат приложения Java всегда возвращает код 1 (что указывает на сбой). Даже включая /bin/bash -c
перед командной строкой, это все равно не работает.
Любое предложение, почему? Я только что установил JRE и JDK на этот сервер. Когда я набираю java -version
, я получаю:
версия java "1.6.0_17" Среда выполнения OpenJDK (IcedTea6 1.7.10) (rhel-1.20.b17.el5-x86_64) 64-разрядная виртуальная машина сервера OpenJDK (сборка 14.0-b16, смешанный режим)