この記事では、JavaプログラムでPythonスクリプトを呼び出す方法について説明します。次のように、参照のために共有してください。
プログラム開発では、Javaプログラムで関連するPythonスクリプトを呼び出す必要がある場合があります。次のコンテンツは、開始する手順と考えられる問題の解決を記録します。
1. Eclipseで新しいMavenプロジェクトを作成します。
2。POM.xmlファイルに次の依存関係パッケージを追加した後、Maven Projectを更新します。
<Dependency> groupId> org.python </groupid> <artifactid> jython </artifactid> <version> 2.7.0 </version> </dependency> <dependency> groupid> org.python> <artifactid> jython-standalone </artifactid> <バージョン> 2.7.0 </バージョン>
3。次のテストコードを書きます。
import org.python.util.pythoninterpreter; public class jpythonscript {public static void main(string args []){pythoninterpreter interpreter = new PythonInterpreter(); interpreter.exec( "days =( 'mod'、 'tue'、 'wed'、 'thu'、 'fri'、 'sat'、 'sun');"); interpreter.exec( "print days [1];"); }}4。テスト:
次のエラーが発生します。
コンソール:インストールに失敗しました '':java.nio.charset.unsupportedcharsetexception:cp0。
スレッド「Main」ImporterRorの例外:サイトモジュールとその依存関係をインポートできません:モジュールという名前のサイトはありません
次の属性が正しいかどうかを判断します。
* sys.path:['... python // jython // 2.7.0 // lib'、 '__classpath__'、 '__ -pyclasspath __/']
この属性には、Cpythonなどの間違ったディレクトリが含まれている可能性があります
*Sys.Prefix:***/Jython/2.7.0
この属性はシステムプロパティpython.homeによって設定されますが、
多くの場合、jython jarファイルの場所によって自動的に決定される
-sオプションまたはpython.import.site = falseを使用して、サイトモジュールをインポートしないようにすることができます
5。問題解決:
リファクタリングコードは次のとおりです。
Import java.util.properties; Import org.python.util.pythoninterpreter; public class Jpythonscript {public static void main(string args []){properties props = new Properties(); props.put( "python.home"、 "libフォルダーへのパス"); props.put( "python.console.encoding"、 "utf-8"); props.put( "python.security.respectjavaaccessibility"、 "false"); props.put( "python.import.site"、 "false");プロパティpretrops = system.getProperties(); pythoninterpreter.initialize(peprops、props、new String [0]); pythoninterpreter interpreter = new PythonInterPreter(); interpreter.exec( "days =( 'mod'、 'tue'、 'wed'、 'thu'、 'fri'、 'sat'、 'sun');"); interpreter.exec( "print days [1];"); }}6。コンピレーションが成功しました。
7。問題を解決するための参照:
http://bugs.jython.org/issue2355
サプリメント:JPYTHONエラースローのソリューションはサイトモジュールをインポートできません
スレッド「Main」ImporterRorの例外:サイトモジュールとその依存関係をインポートできません:モジュールという名前のサイトはありません
public class jpythonscript {public static void main(string args []){properties props = new Properties(); props.put( "python.import.site"、 "false");プロパティpretrops = system.getProperties(); pythoninterpreter.initialize(peprops、props、new String [0]); pythoninterpreter interpreter = new PythonInterPreter(); interpreter.exec( "days =( 'mod'、 'tue'、 'wed'、 'thu'、 'fri'、 'sat'、 'sun');"); interpreter.exec( "print days [1];"); }//複雑なクラスの受け入れ処理マップ<String、object> res = new Hashmap <string、object>(); res.put( "1"、 "danny"); res.put( "2"、 "fanny"); pythoninterpreter( "; interpm.execfile("。 (pyfunction)interpmet( "main"、pyfunction.class); map <pyobject、pyobject> tablem = new hashmap <pyobject、pyobject>(); tablem.put(new pystring( "conf")、pyjavatype.wrapjavaobject(res); pydmictary pydmicter
Java関連のコンテンツについては、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの概要」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。