2012-05-03 2 views
1

C# 응용 프로그램에서 Java 응용 프로그램을 시작하려면 어떻게합니까?C#에서 시작 jar

저는 미니 크래프트 런처를 만들고 있습니다. C# 응용 프로그램에서 jar를 시작하는 일반적인 방법이 있습니까?

+0

Windows 용 태그? – dwerner

+2

가능한 복제본은 http://stackoverflow.com/questions/873809/how-to-execute-a-java-program-from-c 및 http://stackoverflow.com/questions/129989/how-to-call- java-code-from-c – walther

답변

2

당신은 새로운 프로세스로 jar 파일을 시작할 수 :

string appData = Environment.GetEnvironmentVariable("APPDATA"); 

Process.Start(@"java", 
    @"-Xms512m -Xmx1024m -cp """ + appData + @"\.minecraft\bin\*"" -Djava.library.path=""" + appData + @"\.minecraft\bin\natives"" net.minecraft.client.Minecraft"); 

java가있는 가정하여 PATH (자바가 설치 될 때 어떤 기본적으로 발생). 그렇지 않은 경우 java의 절대 경로를 사용하십시오.

이것은 게임을 직접 시작합니다. 사용자가 어디에 놓았는지 말하면 minecraft 발사기를 사용할 수 있습니다. 창문에서는 exe인데 직접 시작할 수 있습니다.

또한 APPDATA는 창 변수입니다. Linux의 경우 경로는 $HOME 또는 ~/입니다. 또한 매개 변수는 완전히 동일하지 않습니다. 사용자가 Linux (또는 사과) 용 Mono로 앱을 실행한다고 가정합니다. Mono를 사용하여 옵션을 테스트 할 수는 없지만 사용할 수는 있습니다.

public static bool IsLinux 
{ 
    get 
    { 
     int p = (int) Environment.OSVersion.Platform; 
     return (p == 4) || (p == 6) || (p == 128); 
    } 
} 

올바른 시작 경로를 선택하는 데 도움이됩니다. 위의 코드는 here입니다. 위 샘플의 속성은 IsLinux이라고되어 ​​있지만 모노 문서의 인용문에 따르면 6은 Mac OS X 용입니다.이 속성은 실제로 사과의 광신자가 그러한 경우를 설교하기 때문에 계속 IsUnix이라고해야합니다. 사과는 창문만큼 유닉스 다.). 나는 이것을 시험 할 수있는 Macware가 없다. 나는 그것을 학생에게 맡긴다.

+0

잠깐, 나는 그것이 문자열과 같을 것이라고 생각했다. appData = Environment.GetEnvironmentVariable ("% APPDATA %"); appdata 폴더에 들어가려면 – Matthewj

+0

@Matthewj 아니요, %는 명령 줄에서 var 검색을 트리거하는 데 사용됩니다. var 이름은 appdata입니다. – payo

+0

좋아, 그래서 코드를 시도하고 그것은 자바 명령 promp을 열고 몇 초 후 그것은 닫히지 만, minecraft 나던가 열립니다. – Matthewj