0

別のプログラムを実行する cpp プロジェクトがあります。
これが私のテストです:

int main() {
    execl("java -jar /pathOfJAR/myjar.jar", NULL);

    return 0;
}

このプロジェクトを実行しましたが、何も得られませんでした。

それから私はこのように試しました:

execl("java", "-jar", "/pathOfJAR/myjar.jar");

エラーが発生しました:

エラー: メイン クラス .pathOfJAR.myjar.jar が見つからないか、読み込めませんでした

ただし、ターミナルでコマンドを実行できます。

java -jar /pathOfJAR/myjar.jar

そして私は正しい結果を得ることができます。

関数の使用方法execl または間違った関数を使用しましたか?

4

2 に答える 2

4

試す:

execl("/bin/java", "java", "-jar", "/pathOfJAR/myjar.jar", NULL);

「/bin/java」は、Java インタープリターへのフル パスに置き換える必要があることに注意してくださいwhich java

于 2016-01-04T17:29:46.437 に答える
-1

エラー メッセージは、execl からではなく、Java からのものです。jar ファイルのマニフェストに Main-Class 属性があることを確認してください。

C++ プログラムから呼び出す前に、コマンド ラインで jar を実行し、動作することをテストします。

とにかく、なぜ C++ ラッパーをビルドしたいのですか? シェルラッパーを(ラッパーが必要な場合)として検討することをお勧めします。

于 2016-01-04T17:32:25.237 に答える