我使用Eclipse创建了一个可运行的jar文件。 Java程序将数字写入.txt文件。当我手动单击该文件时,程序将运行并按需创建.txt。但是,当我尝试从我的C ++代码运行.jar时,它似乎可以运行,但是没有创建txt文件。我在c ++中尝试过这种方法
system("C:\Users\anon\Downloads\KidCod\KidCod\Java\WeatherFinder02.jar");
但是,它没有用。所以我尝试了这种方法:
ShellExecute(NULL, "open", "C:\Users\anon\Downloads\KidCod\KidCod\Java\WeatherFinder02.jar.c", NULL, NULL, SW_SHOWDEFAULT);
但是它仍然不起作用。我没有任何错误或类似的东西。我也尝试在c#中运行它,但是没有用。为什么无法成功创建我的txt文件?
答案 0 :(得分:1)
我认为,如果您必须通过系统打开文件,则需要start
,因为这就是您在cmd中用来启动文件的原因
system("start C:\Users\anon\Downloads\KidCod\KidCod\Java\WeatherFinder02.jar");
您还可以尝试将jar文件编译为exe
答案 1 :(得分:0)
首先,您必须在PATH变量中检查java.exe。
如果没有,则应在其中添加Java。
这是我在msys2和MinGW32上的环境。
export JAVA_HOME=/D/DEV/SDK/JDK/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH
第二,看看您的java是否正在使用-version选项,如下所示
java -version
java version "1.8.0_152-ea"
Java(TM) SE Runtime Environment (build 1.8.0_152-ea-b02)
Java HotSpot(TM) Client VM (build 25.152-b02, mixed mode)
然后使用源代码中的命令。
#include <stdlib.h>
#include <string.h>
#include <string.h>
int main()
{
system("java -version");
return 0;
}
输出应与之前的命令行相同。
为解决您的问题,我创建了两个文件,一个是名为WriteFileExample.java的简单Java文件,另一个是一个清单文件。
WriteFileExample.java
package com.tobee.test;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
public class WriteFileExample {
public static void main(String[] args)
{
PrintWriter out = null;
try {
out = new PrintWriter(new BufferedOutputStream(new FileOutputStream("aa.txt")));
out.print(1);
out.print(3);
out.print(4);
out.print(7);
out.print(9);
out.println();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
finally
{
if(out != null)
{
out.flush();
out.close();
}
}
}
}
清单:MANIFEST.MF
Main-Class: com.tobee.WriteFileExample
我编译它,并使其与清单文件关联在一起,
javac -d . WriteFileExample.java
jar -cvmf MANIFEST.MF WeatherFinder02.jar com/tobee/test/WriteFileExample.class
最后,您现在有了一个可执行的jar文件。 通过执行以下命令,它应该可以正常工作, java -jar WeatherFinder02.jar
您将在该目录中拥有一个aa.txt文件。
然后,是时候将命令行附加到c源代码了。
int main()
{
system("java -version");
system("java -jar WeatherFinder02.jar");
return 0;
}
到目前为止我还没问题。
我希望这对您有帮助。