Я хочу запустить JAVAC скомпилировать muiltiple файлы в зоне Solaris, и я могу сделать это вручную, но мой код ниже не работает:Javac: файл не найден в Solaris
try {
File directory = new File(dir);
ProcessBuilder builder = new ProcessBuilder(dirJava, allfiles);
builder.directory(directory);
builder.redirectErrorStream(true);
Process process = builder.start();
InputStreamReader isr = new InputStreamReader(process.getInputStream());
BufferedReader br = new BufferedReader(isr);
String lineRead;
while ((lineRead = br.readLine()) != null) {
System.out.println("> "+lineRead);
}
process.waitFor();
}
catch (IOException e) {
System.out.println("Could not convert files: "+e.getMessage());
}
В создании ProcessBuilder
dirJava = "/usr/jdk/instances/jdk1.6.0/bin/javac"
DIR = "/ Opt/glassfish3/GlassFish/домены/домен1/TEMP/1b504235dc6be0558532a7b7bf27 /"
allfiles (переменный ток oncatenation 15 полных путей к файлам ниже) =
«/opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/StringWrapper.java /Opt/glassfish3/GlassFish/домены/domain1/TEMP/1b504235dc6be0558532a7b7bf27/методы/String_Distance/и/DistanceInstanceIterator.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/StringDistance.java /опт/glassfish3/GlassFish/домены/домен1/температуры/1b504235dc6be0558532a7b7bf27/методы/String_Distance/U/StringWrapperIterator.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/Tokenizer.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/Jaccard.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/BasicToken.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/BasicStringWrapper.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/StringDistanceLearner.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/DataTownMain.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/BagOfTokens.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/методы/String_Distance/и/Token.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/SimpleTokenizer.java /опт/glassfish3/GlassFish/домены/domain1/температуры/1b504235dc6be0558532a7b7bf27/методы/String_Distance/и/AbstractStringDistance.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/DistanceInstance.java»
ошибки процесса с JAVAC: файл не найден :/opt/glassfish3/glassfish/domains/... '(ошибка перечисляет полные пути для всех 15 файлов)
Но если я перейду в каталог' dir 'в команде prompt и введите «javac» с пробелом, а затем все 15 путей файла из файла, не найденного сообщения об ошибке (скопированное дословно), команда работает и генерирует файлы .class для всех этих файлов в том же каталоге, что и файлы .java. (Я проверил, что в файлах allfiles и dir в моем коде нет начальных или конечных пробелов).
Я подумал, что это потому, что последний каталог в каталоге 'dir' создается во время выполнения на основе sessionId, поэтому я попробовал 'dir' = "/ opt/glassfish3/glassfish/domains/domain1/temp /" (который существует до выполнения), и он все равно терпит неудачу, но опять же, если я вручную перейду в этот каталог и просто наберите javac с полными 15 файловыми именами, он работает. Есть идеи?