Получение вывода из программ на java

Последнее обновление: 28.07.2011

В этой статье мы рассмотрим, как получать результат работы с консольных программ на языке java в программах на .NET.

Допустим у нас есть такая программа на java, скомпилированная в файл Program1.class

public class Program1 
{
	public static void main(String[] args)
	{
			System.out.println("Hellow World!");
	}
}

Основная программа

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Diagnostics;

namespace Sharp_Interop
{
    class Program
    {
    	static void Main(string[] args)
        {
	        Process proc = new Process();
	        //полный путь к файлу java.exe - C:\Program Files\Java\jre6\bin\java.exe 
	        //или C:\Program Files\Java\jdk1.6.0_26\bin\java
	        proc.StartInfo.FileName = "C:\Program Files\Java\jre6\bin\java";
	        //имя исполняемого класса. Файл класса должен лежать в одной папке с приложением
	        //абсолютные пути что-то не канают 
	        proc.StartInfo.Arguments = "Program1";
	        proc.StartInfo.UseShellExecute = false;
	        proc.StartInfo.RedirectStandardOutput = true;
	        proc.StartInfo.RedirectStandardInput = true;
	        proc.StartInfo.CreateNoWindow = true;
	        string str = "";
	        proc.Start();
	        str = proc.StandardOutput.ReadToEnd();
	        proc.Close();
	        proc.Dispose();
	        Console.WriteLine(str);
	        Console.ReadLine();
        }
    }
}

В данном случае мы запускаем вирутальную машину java, передавая ей сам скомпилированный class-файл на java в качестве аргумента. С помощью метода RedirectStandardOutput выходной поток java-программы перенаправляется в нашу программу на c#, где мы его считываем с помощью метода StandardOutput.ReadToEnd.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850