2017-05-26 13 views
1

は私がtask.Theコードを実行するために書かれたJythonスクリプトを持っているJavaアプリケーションに取り組んでいますとJavaコードは正常に動作し、それがEclipseのIDEを介して実行されたときにJythonスクリプトが実行されます。 しかし、Javaアプリケーションを.jarファイルにエクスポートすると、Jythonスクリプトは実行されません。のJythonスクリプト

application.jar 
    |-- com 
     |--example 

      |-- package1 
      |-- Function2.Java 
      |-- pre_myAction.py 

      |-- package2 
      |-- Function1.Java 

私は次のようにFunction1.javaからscript_functionを呼び出すようにしようとしています:

この

は、私は、Eclipse IDEで、次の午前のディレクトリ構造である

PythonInterpreter interp = new PythonInterpreter(); 
interp.execfile(".//com//example//pre_myAction.py"); 
String funcName = "function1"; 
PyObject someFunc = interp.get(funcName); 

if (someFunc == null) { 
    throw new Exception("Could not find Python function: " + funcName); 
} 

try { 
    interp.set("DataMap", dataMap); 
    someFunc.__call__(new PyString(file1)); 
    } catch (PyException e1) { 
    LOGGER.log(Level.SEVERE, e1.getMessage()); 
} 

interp.cleanup(); 
interp.close(); 

私が試しましたコマンドプロンプトからjarファイルを実行するには、このエラーが表示されます。

File not found -//com//example//pre_myAction.py 

An同じコードがEclipse IDEでエラーなく実行されます。

誰もがjarファイルにしてJythonスクリプトを実行する方法についての解決策や提案を提供することができます。

+0

「実行されません」と表示されない場合があります。エラーメッセージとは何ですか? Jarをどのように起動していますか?同様の方法でシンプルなJythonスクリプトを実行できましたか? – dimo414

+0

コマンドラインでそのjarを実行すると、jythonでjavaを有効にしましたか? Btw:コード "example"にはコードが含まれていません。 – GhostCat

+0

pre_myAction.pyはcom/example/package1ではなくcom/exampleにあります。それがEclipse IDKで動作する理由編集:決して気にしない、私はそれを見ると思います。 – jaxad0127

答えて

0

JythonのコードをざっとブラウザとPythonInterpreter.execfile(String)は、ファイルシステム内のファイルではなく、JARを探しますように見えます。 Class.getResourceAsStreamを使用して検索し、メソッドのInputStreamバージョンを使用して試してみることができます。

のJythonはCPythonのミラーリング動作を与える、自動的にJARのルートからファイルをロードするように見えます。詳細は、Bundling python files inside jar for access via jythonを参照してください。

関連する問題