์ฒด์จ ์ธก์ ๊ด๋ จํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ์ฌ์ฉํ๋ ์ค
์ฌ๋ฌ๊ฐ์ง ๋ง์ ๋ฌธ์ ๋ค ๋๋ฌธ์ ๊ฒฐ๊ตญ ๋ ํ๋ก๊ทธ๋จ์ ๋์์คํํด์ ์ฌ์ฉํ๊ธฐ๋ก ๋์๋ค.
ํ๋ก๊ทธ๋จ์ ์ค์น ์ ๋ ์ง์คํธ๋ฆฌ๋ก ์๋ ์ฌ์คํ ๋๋๋ก ์ค์ ์ด ๊ฐ๋ฅํ๋ฐ
๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ค์นํ์ผ๋ ๋ฐ๋ก ์๊ณ ์ค์ ์ด ๋ถ๊ฐํ๋ค.
ํ๋ก๊ทธ๋จ ์คํ ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ ๊ฐ์ด ์คํํด์ฃผ๋ ค ํ๋ค.
์๋ ProcessBuilder()๋ฅผ ํตํด exeํ์ผ์ ์คํํด์ ์ผ์๋๋ฐ
ํ๋ก์ ํธ์ root์ ๊ฒฝ๋ก๋ฉด ๋ฐ๋ก ์คํ ๊ฐ๋ฅํ๋ฐ
ํ์ ํด๋ ์๋์ ์๋ exeํ์ผ์ ์คํ๋์ง ์์๋ค.
์ฌ์ค root ๊ฒฝ๋ก์ ํ๋ก๊ทธ๋จ์ ๋ฃ๊ณ ๋ฐ๋ก ์จ๋ ๋์ง๋ง,
์ด๊ฒ์ ๊ฒ ์ฐธ์กฐํ๋ dllํ์ผ ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ๋ง์ ๋ณด๊ธฐ ์ซ๋ค๋ ์ด์ ๋ก ๋ ๊ฐ๋ฐ ์ฆ์์ด.. ๐
ProcessBuilder์ ๋งค๊ฐ๋ณ์๋ก ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ณง๋ฐ๋ก ์ค์ ํ ์๋ ์์๋ค.
directory๋ฅผ ๋ณ๊ฒฝํ๋ [ cd ] ๋ช
๋ น์ด๋ ์ ๋ด์ฅ ๋ช
๋ น์ด์ด๊ธฐ ๋๋ฌธ์
๋ณ๊ฐ์ ์คํํ์ผ๋ก ์กด์ฌํ์ง ์๋๋ค๊ณ ํ๋ค..!
๋ฌด์จ ์๋ฆฌ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๊ฒ์์์!!
ProcessBuilder ๊ฐ์ฒด์๋ directory(File file) ๋ฉ์๋๊ฐ ์กด์ฌํ๋ค.
directory ๋ฉ์๋๋ฅผ ํตํด ์คํํ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์๋ค.
๋ผ๊ณ ํ๋๋ฐ ์๋จนํ๋ค..^^
์ถ๊ฐ์ ์ธ cmd ๋ช ๋ น์ด๋ฅผ ํตํด ๋๋ ํ ๋ฆฌ๋ฅผ ์ก์ ์ ์์๋ค.
List ๊ฐ์ฒด์ "rundll32.exe", "url.dll,FileProtocolHandler", "execute file name" ์ปค๋งจ๋๋ฅผ ๋ด์ ProcessBuilder์ ์ปค๋งจ๋์ ์ถ๊ฐํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ directory์ ํ์ฌ ์์น ๋ฐ ํ์ํด๋์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํด์ฃผ๋ฉด ์์ฃผ ์ ์คํ๋๋ค.
String path = System.getProperty("user.dir");
List<String> cmd = new ArrayList<String>();
cmd.add("rundll32.exe");
cmd.add("url.dll,FileProtocolHandler");
cmd.add("EXECUTE FILE NAME");
new ProcessBuilder(cmd).directory(new File(path + "SUB_FOLDER")).start();
์ฌ์ค cmd ๋ช
๋ น์ด๋ Window ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ก์ธ์ค๋ ๋ด๋ ๋ด๋ ๋ชจ๋ฅด๊ฒ ๋ค.. :(
processBuilder() ๋งค๊ฐ๋ณ์๋ก ํ์ํด๋๊น์ง ํ๋ฒ์ ์ง์ ๋ ๊ฒ์ด๋ผ ์๊ฐํ๋๋ฐ,
์๊ฐ๋ณด๋ค ๊ทธ๋ฆฌ ๊ฐ๋จํ๊ฒ ํ๋ฌ๊ฐ์ง ์์๋ค..
rundll32.exe ๊ด๋ จ ์ฐธ๊ณ ์๋ฃ
>>rundll32.exe ํ๋ก์ธ์ค<<
๊ฒฝ๋ก์ค์ ๊ด๋ จ ์ฐธ๊ณ ์๋ฃ
>> Setting working directory for ProcessBuilder is not working By stackoverflow <<