触发Java JAR以使用C ++运行并传递String

时间:2017-12-20 22:30:03

标签: java c++ jar

让我们想象一下,我在C ++和Java中有以下两个非常简单的代码片段:

C ++

#include <iostream>
using namespace std;

int main() {
string str = "Hello Java from C++";
cout << str << endl;

When reaching here, while running this C++ program, I would like to trigger the program to run my JAR and send str as a argument so the Java program can take it and set it as a String.

return 0; 
}

爪哇

public class HelloWorld {

public static void main(String[] args) {
    String str = argumentFromJAR; //take argument from the JAR and set it as a String
    System.out.println("Got" + str + "from the C++ program");
}
}

执行C ++程序时,我希望它运行JAR文件并将其作为String传递给参数。 JAR已经创建,不知何故我想让这个String以Java结尾。

我很乐意为你提供帮助!哦,顺便说一句,如果重要的话,我会在CentOS上使用g ++运行C ++程序(Java也已经安装和测试)。

2 个答案:

答案 0 :(得分:1)

您需要使用以下行调用jar:system("java filename.jar [args]");

同样在java文件中你必须做这样的事情:

String str = "";
for(int i = 0; i<args.length;i++) str += args[i]; 
System.out.println("Got" + str + "from the C++ program");

希望这有帮助。

答案 1 :(得分:0)

杰克弗里曼的答案基本上是正确的。但是,在代码片段中我应该更改两件小事:

  1. 如果您不确定环境变量,请不要调用“java” 同名的实际指向Java目录。除此以外, 使用所需JRE java.exe的完整路径。但是,这会 如果你希望它由其他人运行,你的程序会变得不那么灵活 用户,因为他们无法自定义路径(可能只是 通过配置文件?)。
  2. 建议的for循环会破坏正常的空格 在命令行中分隔参数。所以这是一个建议 kepps分隔空格并使所有参数传递给a 字符串:

     function insertTableRow ( p_iId, d_prijs, c_prijs, code, artikelNL )
     {
        var $id = $('.buttonbewerken[data-id='+p_iId+']');
        var row = '<tr>';
        row += '<td class="d_prijs ruimte">'+d_prijs+'</td>';
        row += '<td class="c_prijs ruimte">'+c_prijs+'</td>';
        row += '<td class="code ruimte">'+code+'</td>';
        row += '<td class="artikelnl ruimte">'+artikelNL+'</td>';
        row += '<td><button data-id="'+p_iId+'" class="buttonbewerken">bewerken</button></td>';
        row += '</tr>';
    
        $('#result').prepend(row);
    }