[解決済み] py4Jを使った最も簡単な例
2022-02-05 09:08:52
質問
インストールしたのは
py4J
の上でpipを使って
conda
の仮想環境をPythonで構築しました。 超簡単な例を書いてみました
AdditionApplication.java
をテストするために
py4J
が、コンパイルに失敗する、つまり
javac AdditionApplication.java
は、次のような文句を言って失敗します。
GatewayServer
が定義されていない。
私はPythonの知識はありますが、残念ながらJavaの知識はありません。他に用意するものはありますか?
public class AdditionApplication {
public int addition(int first, int second) {
return first + second;
}
public static void main(String[] args) {
AdditionApplication app = new AdditionApplication();
// app is now the gateway.entry_point
GatewayServer server = new GatewayServer(app);
server.start();
}
}
因みに、私は以下のバージョンのJavaをインストールしています。
java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
アップデート1
追加した後
import py4j.GatewayServer;
を先頭に追加すると、違うエラーが発生しました。
package py4j does not exist
アップデート2
pip install py4j
を残しています。
jar
の下にあるファイル
<PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar
. でクラスパスに追加しています。
javac -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication.java
と出力されます。
AdditionApplication.class
実行方法は?
最終アップデートと解決策
これまでの修正を適用して、やっとこさ、でコードを実行。
java -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication
は、バックグラウンドで実行されるコードです。テストするには
>>> from py4j.java_gateway import JavaGateway
>>> gateway = JavaGateway() # connect to the JVM
>>> random = gateway.jvm.java.util.Random() # create a java.util.Random instance
>>> number1 = random.nextInt(10) # call the Random.nextInt method
>>> number2 = random.nextInt(10)
>>> print(number1,number2)
(2, 7)
>>> addition_app = gateway.entry_point # get the AdditionApplication instance
>>> addition_app.addition(number1,number2) # call the addition method
解決方法は?
輸入
GatewayServer
から
py4j
パッケージを使用することで、未修飾のクラスをアプリケーションで使用することができます。
import py4j.GatewayServer;
関連
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】intがnullであるかどうかを確認する方法
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み】CreateProcess error=2, The system cannot find file specified.
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】intがnullであるかどうかを確認する方法
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している