[英]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.