简体   繁体   中英

Trying to compile and run c++ code with java code

I was trying to compile and run a c++ program from a java program, I made a .bat file having compilation and execution command, The code for making .bat file works fine, but code to open the .bat file doesn't work. It says "g++ is not recognized as an internal/external command", but if I open .bat file manually, it works fine. please help me with the code:

import java.io.*;
import java.util.*;
import java.lang.*;

public class Batch
{
    FileOutputStream fos;
    DataOutputStream dos;

    public Batch()
    {
    }

    public void createBat() throws Exception
    {
        File file=new File("M:\\AV\\compile_Execute.bat"); 
        fos=new FileOutputStream(file);
        dos=new DataOutputStream(fos);
        dos.writeBytes("@echo off");
        dos.writeBytes("\n");
        dos.writeBytes("g++ main.cpp -o main.exe -lmingw32 -lSDL2main -lSDL2 & main.exe");
        fos.close();
    }

    public void executeBat() throws Exception
    {
        String[] command = {"cmd.exe", "/C", "Start", "M:\\AV\\compile_execute.bat"};

        Process p =  Runtime.getRuntime().exec(command);
    }
}

What happens here is that you messed up with the path, because the file is located in another drive, you cannot just use the path or go back a folder using ".."

  1. Firstly, go to the biggest directory

    cd "C:\\"
  2. Then, change drive

    M:

    Note that to change directoy you must be in the drive biggest folder and that to change drives, you must use the format letter:

    These two steps can be simplified to cd D:

  3. Next:

     cd "M:\\\\AV\\\\"
  4. Finally:

     compile_execute.bat

Merging it, I would use this instead of just a path: cd /DM:\\\\AV\\\\ compile_execute.bat

I suggest reading about MS-DOS .

Thanks for the comment related to not being able to change directory to a file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM