触发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");
希望这可以帮助。
另一答案
杰克弗里曼的答案基本上是正确的。但是,在代码片段中我应该更改两件小事:
- 如果您不确定同名环境变量实际指向Java目录,请不要调用“java”。否则,请使用所需JRE java.exe的完整路径。但是,如果您希望程序由其他用户运行,这将使您的程序不那么灵活,因为它们无法自定义路径(可能只通过配置文件?)。
- 建议的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 从桌面运行以使用外部库进行编译;如果库包含在源代码中,则运行良好
Jenkins自动打包并部署(以java -jar形势运行)
Java:使用javapackager打包jar为exe并运行