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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触发Java JAR以使用C ++运行并传递String相关的知识,希望对你有一定的参考价值。

让我们想象一下,我在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; 
}

Java的

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也已经安装和测试)。

答案

您需要使用以下行来调用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. 如果您不确定同名环境变量实际指向Java目录,请不要调用“java”。否则,请使用所需JRE java.exe的完整路径。但是,如果您希望程序由其他用户运行,这将使您的程序不那么灵活,因为它们无法自定义路径(可能只通过配置文件?)。
  2. 建议的for循环破坏通常在命令行中分隔参数的任何空格。所以这里有一个建议,即kepps分隔空格并使所有参数传递给String: public static void main(String[] args) { String argumentString = ""; for(int i = 0; i < args.length(); i++) { argumentString += args[i] + " "; } argumentString = argumentString.trim(); System.out.println("Got " + argumentString + " from the C++ program"); }

以上是关于触发Java JAR以使用C ++运行并传递String的主要内容,如果未能解决你的问题,请参考以下文章

Java 8 .jar 文件不会使用 Netbeans 8.0.2 从桌面运行以使用外部库进行编译;如果库包含在源代码中,则运行良好

使用 VM-options 启动 jar

Jenkins自动打包并部署(以java -jar形势运行)

Java:使用javapackager打包jar为exe并运行

linux下jar包启动命令,我用nohup java -jar + *.jar命令启动,此时命令

如何用c语言实现上传文件