2017-02-21 8 views
0

次のコードはローカルPCに入出力権限があり正しく動作します。しかし、私は私のWindows server2012でこれをやろうとしたときに、いくつかの問題が発生しました。それは、execを使用してPythonコードを正しく実行することはできません、私のPythonは、最終的な結果を与えることはできません。 I/Oには権限がないと思いますが、なぜですか?java execはPythonプログラムを実行しますが、PythonにはI/Oへの権限がありません。

Javaコード:

package test; 

    import java.io.BufferedReader; 
    import java.io.BufferedWriter; 
    import java.io.File; 
    import java.io.FileReader; 
    import java.io.FileWriter; 
    import java.io.IOException; 
    import java.io.InputStreamReader; 

    public class test { 

     private static void generateFile() throws IOException{ 
      BufferedWriter bw = new BufferedWriter(new FileWriter("src/test/input.txt", false)); 
      String eventString = "This is a example"; 
      bw.write(eventString); 
      bw.close(); 
     } 

     private static void getFile() throws IOException{ 
      BufferedReader br = new BufferedReader(new FileReader("src/test/output.txt")); 
      String jsonResults = br.readLine(); 
      br.close(); 

     } 

     public static void main(String[] args) throws IOException { 

      generateFile(); 

      Runtime rt = Runtime.getRuntime(); 
      Process pr = rt.exec("python test.py", null, new File("src/test/")); 
      BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
      String line; 
      while ((line = in.readLine()) != null) { 
       System.out.println(line); 
      } 
      in.close(); 
      try { 
       pr.waitFor(); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } finally { 
       pr.destroy(); 
      } 

      getFile(); 
     } 

    } 

のpythonコード:

f = open('input.txt', 'r') 
line = f.readline() 
with open('output.txt', 'w') as fw: 
    fw.write(line) 

print("Done!") 

ERRORのINFOMATION:ここ

Exception in thread "main" java.io.FileNotFoundException: src\test\output.txt (The system cannot find the specified file.) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(FileInputStream.java:195) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at java.io.FileInputStream.<init>(FileInputStream.java:93) 
    at java.io.FileReader.<init>(FileReader.java:58) 
    at test.test.getFile(test.java:21) 
    at test.test.main(test.java:49) 

答えて

0

様々なもの(一瞬のためのより多くの "コード品質" ヒント):

  • あなたの貧弱な方法はしていますあまりにも多くものです。例:

個々の "部品"、次のように - すべては、単純なヘルパーメソッドに入る必要があります。

String eventString = getJsonEventListInTopic(topicLabel); 
FileWriter fw = ... 
fw.close(); 
  • 意味:あなたはSingle Layer Of Abstraction principle
  • コアの周りに読みたいですあなたの実際の質問で進歩することを指摘してください。を実行すると、そのWindowsシステム(正確には同じ引数/パラメータを使用します)で手動でpythonスクリプトが実行されます - それは動作しますか? 「python.exeがあなたのパスにない」という非常に単純なものかもしれません。
+0

まず、あなたの親切なアドバイスをお願いします。私はそれぞれそれを読むでしょう。そして、私はこのコードをeclipseで試してみましたが、私のPCでcmdだけでpythonスクリプトを実行します。 –

+0

さらに、私はこのスクリプトをサーバでcmdで試してみました。 –

+0

次に、スタックトレースのようなすべてのエラー情報を質問に追加します。 – GhostCat

関連する問題