簡體   English   中英

我無法從C ++程序運行可執行jar

[英]I am unable to run executable jar from c++ program

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

我認為,如果您必須通過系統打開文件,則需要start因為那是您用來在cmd中啟動文件的方式,因此

system("start C:\\Users\\anon\\Downloads\\KidCod\\KidCod\\Java\\WeatherFinder02.jar");

您也可以嘗試將jar文件編譯為exe

首先,您必須檢查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;
}

到目前為止,我沒有問題。

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM