2017-10-31 3 views
0

私は私のPythonフレームワーク内から使いたいJavaクラスファイルを持っています。私はjythonについて知っていますが、私はjythonで私のPythonコード全体を実行したくないのですが、代わりに何らかの形でプリコンパイルしてPythonの使用可能なクラスにインポートする方が好きですか?Python内からコンパイルされたJavaクラスを使用するには?

+0

JVM全体のサポート構造がないJavaクラスは使用できません。それをPythonに変換することは、非常に単純な場合を超えて可能になることはありません。 – user2357112

+0

答えをありがとう!原則として私はjythonに満足していますが、何とかnumpy、scipyなどのようなPythonモジュールをロードできません。私はすでにPYTHONPATHを追加してJYTHONPATHを調整しましたが、それは何の考えですか? – Guiste

+2

JythonはNumPyとSciPyをネイティブで使用できないため、読み込めません。 [JyNI](https://jyni.org/)が必要です。 – kindall

答えて

1

コメントに既に書いてあるとおり、実行するには完全なJVMが必要です。あなたの問題のためにグーグルで、言っ

は、Pythonのプロセス内からJVMを起動し、あなたがそれと対話することを可能にするプロジェクトがあるようです:プロジェクトのページにはほとんどの情報にもかかわらずhttp://pythonhosted.org/javabridge/

、それはやりました新しいPython 3.6環境で私の2回目の試しにインストールしてください(私はちょうど、Fedoraシステムの簡単なインストールの外でget thisにする必要がありました)。

NumPyとSciPyを主体とするシステムで必要となる単一のクラスであれば、JavaコードをPythonに書き直すことをお勧めします。

このJavabridgeプロジェクトが失敗した場合、代わりにJavaクラスをいくつかのRPCサーバーに公開したり、XMLRPCを使用したり、あまり機能しないWebサービスとしてJavaクラスを公開したり、ネットワークプロトコルを使用してPythonから呼び出します。 ここに来ると、Javaコードとの間でメッセージをやりとりするためにブローカーとしてredisやrabbitmqを使用するなど、できることはたくさんあります。これらのアプローチの共通点は、 JVMで独自のプロセスで実行されるJavaコード、およびリモート呼び出しを行うことができるサーバーループで実行されます。

関連する問題