我无法从C ++程序运行可执行jar

时间:2019-06-13 07:28:10

标签: java c++

我使用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文件?

2 个答案:

答案 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;
}

到目前为止我还没问题。

我希望这对您有帮助。