2012-06-28 101 views
0

文件沒有找到我想要運行javac編譯在Solaris區域muiltiple文件,我可以做手工,但我下面的代碼是不工作:的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 = 「/選擇/ glassfish3 /的glassfish /域/域1 /溫度/ 1b504235dc6be0558532a7b7bf27 /」

allfiles( AC低於15個完整的文件路徑)oncatenation =

「/opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/StringWrapper.java /選擇/ glassfish3 /的glassfish /域/ DOMAIN1 /溫度/ 1b504235dc6be0558532a7b7bf27 /方法/ String_Distance/U/DistanceInstanceIterator.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/StringDistance.java 的/ opt/glassfish3/GlassFish中/域/ DOMAIN1 /溫度/ 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/U/Token.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/SimpleTokenizer.java 的/ opt/glassfish3/GlassFish中/域/域1 /溫度/ 1b504235dc6be0558532a7b7bf27 /方法/ String_Distance/U/AbstractStringDistance.java /opt/glassfish3/glassfish/domains/domain1/temp/1b504235dc6be0558532a7b7bf27/methods/String_Distance/u/DistanceInstance.java」

用javac過程中的錯誤:文件未找到:/ opt/glassfish3/glassfish/domains/...'(錯誤列出了所有15個文件的完整路徑)

但是如果我進入命令中的'dir'目錄提示並用空格鍵入'javac',然後從文件未找到的完整15個文件路徑中找到錯誤消息(逐字複製)該命令的工作原理,併爲與.java文件位於同一目錄中的所有文件生成.class文件。 (我已經檢查過,在我的代碼中allfiles和dir變量中沒有前導或尾隨空格)。我想這可能是因爲'dir'中的最後一個目錄是在運行時基於sessionId創建的,所以我嘗試了'dir'=「/ opt/glassfish3/glassfish/domains/domain1/temp /」(它存在於運行時間之前),並且仍然失敗,但是如果我手動進入該目錄,只需鍵入具有完整15個文件路徑名的javac即可。有任何想法嗎?

回答

0

好吧,我想出了我在做什麼簡單的錯誤 - 而不是將多個文件路徑連接到'allfiles'並將其作爲單個參數傳遞,我需要將每個文件路徑作爲自己的參數傳遞給ProcessBuilder,或者將所有參數作爲數組傳遞。