开发者

How to compile Java from C#?

I'm trying to use the following C# code to compile Java using javac:

Process p = new Process();
p.StartInfo.FileName = "javac";
Directory.CreateDirectory(Application.StartupPath + @"/TempJava");
p.StartInfo.Arguments = "-d "Application.StartupPath + @"/TempJava" + files;
p.Start();

"files" represents a string variable containing the name(s) of the *.java files.

All in all, I want to create a new folder, and then take th开发者_StackOverflow中文版e Java files (from where ever they may be located) and compile it into a class file(s) in TempJava.

For some reason, the code doesn't work, no errors, no warnings, but when I run it and check TempJava, there's no files in it.


Just because your child process ends with a possible error, it doesn't mean your parent process must be aware of it.

Inspect the process' exit code and standard output stream, and especially the standard error stream. Your answer lies in there...


here i have 2 buttons run and compile here is some code to help.

private void comp_Click(object sender, EventArgs e)
    {
        string text = "javac " + label1.Text + file + "@pause" + "@stop";
        text = text.Replace("@", System.Environment.NewLine);

        File.WriteAllText(label1.Text + "Compile.bat", text);

        Process proc = null;
        try
        {
            proc = new Process();
            proc.StartInfo.FileName = label1.Text + "Compile.bat";
            proc.StartInfo.CreateNoWindow = false;
            proc.Start();
            proc.WaitForExit();
        }
        catch
        {

        }

    }

    private void runp_Click(object sender, EventArgs e)
    {
        string news = file.Remove(file.Length - 5);
        string text = "java " + news + "@pause";
        text = text.Replace("@", System.Environment.NewLine);

        File.WriteAllText(label1.Text + "Run.bat", text);

        Process proc = null;
        try
        {
            proc = new Process();
            proc.StartInfo.FileName = label1.Text + "Run.bat";
            proc.StartInfo.WorkingDirectory = label1.Text.Remove(label1.Text.Length - 1);
            proc.StartInfo.CreateNoWindow = true;
            proc.Start();
            proc.WaitForExit();
        }
        catch
        {

        }
    }

all i really do is create a batch and run it using c#.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜