Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z ProcessBuilderem :P


Rekomendowane odpowiedzi

Opublikowano

Do rzeczy, mam taki kodzik:

 

 

				List<String> cmds = new ArrayList<String>();
				cmds.add("javaw");
				cmds.add("-Xmx1G");
				cmds.add("-Djava.library.path=\""+Utils.getNativesDirectory(v.getId())+"\"");
				cmds.add("-cp "+constructClasspath()+"");
				cmds.add(v.getMainClass());
				cmds.add(parseMinecraftArguments());
				
				String temp="";
				for(String cmd:cmds) {
					temp += " "+cmd;
				}
				System.out.println(temp);
				
				ProcessBuilder p = new ProcessBuilder(cmds);
				try {
					p.start();
				} catch (IOException e) {
					e.printStackTrace();
				} 

 

 

 

Który (oprócz tego że próbuje uruchomić Proces) printuje mi taki kodzik:

javaw -Xmx1G -Djava.library.path="C:\Users\Piotrek\AppData\Roaming\.minecraft\versions\1.7.2\natives" -cp C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\4.5\jopt-simple-4.5.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\apache\logging\log4j\log4j-core\2.0-beta9\log4j-core-2.0-beta9.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\codecwav\20101023\codecwav-20101023.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl_util\2.9.0\lwjgl_util-2.9.0.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\commons-io\commons-io\2.4\commons-io-2.4.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\apache\logging\log4j\log4j-api\2.0-beta9\log4j-api-2.0-beta9.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl\2.9.0\lwjgl-2.9.0.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\io\netty\netty-all\4.0.10.Final\netty-all-4.0.10.Final.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\mojang\authlib\1.3\authlib-1.3.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\ibm\icu\icu4j-core-mojang\51.2\icu4j-core-mojang-51.2.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\java3d\vecmath\1.3.1\vecmath-1.3.1.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\net\sf\trove4j\trove4j\3.0.3\trove4j-3.0.3.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\google\guava\guava\15.0\guava-15.0.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\google\code\gson\gson\2.2.4\gson-2.2.4.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft/versions/1.7.2/1.7.2.jar net.minecraft.client.main.Main --username Test --version 1.7.2 --gameDir C:\Users\Piotrek\AppData\Roaming\.minecraft --assetsDir C:\Users\Piotrek\AppData\Roaming\.minecraft\assets --uuid cb5271ac06da4ad7998065fa97e17227 --accessToken 02a001f5fc044d29b96e5a670387af66

I, ten wyprintowany kodzik jak wkleję do cmd.exe to wszystko pięknie działa, zaś nie wiedzieć czemu gdy odpalam go process builderem to wywala błąd o treści "Error: Could not create the Java Virtual Machine. Error: A fatal exception has ocurred. Program will exit."

 

Proszę o pomoc, bo zaraz mi mózg wyparuje. Chyba koniec programowania na dzisiaj :P

 

Opublikowano

Zdecydowanie nie, bo Process nie posiada metody start() :) Po drugie nie posiadam .jar, mam tylko zbór (classpath) i z nich uruchamiam net.minecraft.client.main.Main a po trzecie nie jestem pewien czy jest to wieloplatformowe ? A po czwarte mimo wszystko chciałbym wiedzieć czemu Process Builder nie działa :(

 

Ale dzięki za pomoc.

Opublikowano

emm zobacz jak ja zrobiłem i zmień sobie dla 1.7.2

Process p1 = Runtime.getRuntime().exec("java -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx1G -Djava.library.path=" + gameLocation + "\\versions\\"+getVersion()[1]+"\\"+getVersion()[1]+"-natives-"+getVersion()[2]+" -cp " + gameLocation + "\\libraries\\net\\sf\\jopt-simple\\jopt-simple\\4.5\\jopt-simple-4.5.jar;" + gameLocation + "\\libraries\\com\\paulscode\\codecjorbis\\20101023\\codecjorbis-20101023.jar;" + gameLocation + "\\libraries\\com\\paulscode\\codecwav\\20101023\\codecwav-20101023.jar;" + gameLocation + "\\libraries\\com\\paulscode\\libraryjavasound\\20101123\\libraryjavasound-20101123.jar;" + gameLocation + "\\libraries\\com\\paulscode\\librarylwjglopenal\\20100824\\librarylwjglopenal-20100824.jar;" + gameLocation + "\\libraries\\com\\paulscode\\soundsystem\\20120107\\soundsystem-20120107.jar;" + gameLocation + "\\libraries\\argo\\argo\\2.25_fixed\\argo-2.25_fixed.jar;" + gameLocation + "\\libraries\\org\\bouncycastle\\bcprov-jdk15on\\1.47\\bcprov-jdk15on-1.47.jar;" + gameLocation + "\\libraries\\com\\google\\guava\\guava\\14.0\\guava-14.0.jar;" + gameLocation + "\\libraries\\org\\apache\\commons\\commons-lang3\\3.1\\commons-lang3-3.1.jar;" + gameLocation + "\\libraries\\commons-io\\commons-io\\2.4\\commons-io-2.4.jar;" + gameLocation + "\\libraries\\net\\java\\jinput\\jinput\\2.0.5\\jinput-2.0.5.jar;" + gameLocation + "\\libraries\\net\\java\\jutils\\jutils\\1.0.0\\jutils-1.0.0.jar;" + gameLocation + "\\libraries\\com\\google\\code\\gson\\gson\\2.2.2\\gson-2.2.2.jar;" + gameLocation + "\\libraries\\org\\lwjgl\\lwjgl\\lwjgl\\2.9.0\\lwjgl-2.9.0.jar;" + gameLocation + "\\libraries\\org\\lwjgl\\lwjgl\\lwjgl_util\\2.9.0\\lwjgl_util-2.9.0.jar;" + gameLocation + "\\versions\\"+getVersion()[1]+"\\"+getVersion()[1]+".jar net.minecraft.client.main.Main --username " + user + " --session token:abcdefghijklmn...123:abcdefghijklmn...123 --version "+getVersion()[1]+" --gameDir " + gameLocation + " --assetsDir " + gameLocation + "\\assets");

Tak wgl Runtime.getRuntime().exec(cmd); na pewno zadziała też na linuxie :)

Zbieram jak większość +!

Opublikowano

Taki kod:

 

 

				String cmd = "java "+
							 "-Xmx1G "+
							 "-Djava.library.path="+Utils.getNativesDirectory(v.getId())+" "+
							 "-cp "+constructClasspath()+
							 " "+v.getMainClass()+
							 " "+parseMinecraftArguments();
				System.out.println(cmd);
				
				try {
					Process p1 = Runtime.getRuntime().exec(cmd);
				} catch (IOException e) {
					e.printStackTrace();
				} 

 

 

 

Wynik:

 

 

java -Xmx1G -Djava.library.path=C:\Users\Piotrek\AppData\Roaming\.minecraft\versions\1.7.2\natives -cp C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\mojang\authlib\1.3\authlib-1.3.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\4.5\jopt-simple-4.5.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\apache\logging\log4j\log4j-core\2.0-beta9\log4j-core-2.0-beta9.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\codecwav\20101023\codecwav-20101023.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\commons-io\commons-io\2.4\commons-io-2.4.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\ibm\icu\icu4j-core-mojang\51.2\icu4j-core-mojang-51.2.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\apache\logging\log4j\log4j-api\2.0-beta9\log4j-api-2.0-beta9.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\google\code\gson\gson\2.2.4\gson-2.2.4.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\net\sf\trove4j\trove4j\3.0.3\trove4j-3.0.3.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\java3d\vecmath\1.3.1\vecmath-1.3.1.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl\2.9.0\lwjgl-2.9.0.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\com\google\guava\guava\15.0\guava-15.0.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\io\netty\netty-all\4.0.10.Final\netty-all-4.0.10.Final.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl_util\2.9.0\lwjgl_util-2.9.0.jar;C:\Users\Piotrek\AppData\Roaming\.minecraft/versions/1.7.2/1.7.2.jar net.minecraft.client.main.Main --username Test --version 1.7.2 --gameDir C:\Users\Piotrek\AppData\Roaming\.minecraft --assetsDir C:\Users\Piotrek\AppData\Roaming\.minecraft\assets --uuid cb5271ac06da4ad7998065fa97e17227 --accessToken 02a001f5fc044d29b96e5a670387af66 

 

 

 

I znów, wklejam wynik w cmd i działa, odpalam w eclipse i tym razem już nie ma błędu, ale widać że coś robi (kursor się zmienia) i .... nic.

Opublikowano

a zobacz co ci zwraca ErrorStream

BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String a;
try {
	while((a=br.readLine())!=null){
	
		System.out.println(a);
	}
} catch (IOException e) {
	e.printStackTrace();
}
						

Zbieram jak większość +!

Opublikowano
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Piotrek\AppData\Roaming\.minecraft\versions\1.7.2\natives\lwjgl.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary1(Unknown Source)
	at java.lang.ClassLoader.loadLibrary0(Unknown Source)
	at java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.lang.Runtime.loadLibrary0(Unknown Source)
	at java.lang.System.loadLibrary(Unknown Source)
	at org.lwjgl.Sys$1.run(Sys.java:73)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
	at org.lwjgl.Sys.loadLibrary(Sys.java:95)
	at org.lwjgl.Sys.<clinit>(Sys.java:112)
	at azd.J(SourceFile:2064)
	at net.minecraft.client.main.Main.main(SourceFile:36)

To by rozwiązywało sprawę, gdyby nie to że po wpisaniu dokładnie tego samego w cmd wszystko działa, z tymi samymi natives.

Opublikowano

Kurde dziwne mi ten błąd sie pojawiał też ale tylko po aktualizacji plikow tzn update -> start ale bez update all działało jak trzeba ;p

Zbieram jak większość +!

Opublikowano

Spróbowałem znów z processbuilderem i ErrorStream zwraca:

Unrecognized option: -cp C:\Users\Piotrek\AppData\Roaming\.minecraft [... bla bla bla]

próbowałem też z -classpath i to samo, tak samo jak próbowałem z " , i tak samo w cmd.exe wszystko działa.

 

 

@edit

Dobra, zmieniłem na -Djava.class.path= i wtedy wywala ten sam błąd co z Runtime.getRuntime -,-

 

@edit

Chyba nie macie co dalej myśleć, odpaliłem oryginalny launcher , on sobie wypakował swoje natives, skopiowałem je do tych moich i działa :D Czyli natives było uszkodzone, może to był błąd w mojej klasie odpowiedzialnej za UnZip :P No nic, dzięki za pomoc :D

 

@edit

cofam, to nie był problem z Unzipem :O Nagle poprostu wszystko zaczęło działać. Fuck Logic.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...