Java Home lib 디렉토리에 확장을 복사해야합니다. 하지만 내 문제는 Windows 및 Mac OS에서 java 홈을 찾는 것입니다. 이 디렉토리는 각 idk 업데이트마다 변경됩니다. 환경 변수로 수정하는 것을 도와 주실 수 있습니까? 감사합니다.AS3 - JAVA 홈 경로 얻기
답변
당신은 앱 사용자가 실제로 자신의 계정의 환경 설정에
Environment Variables
으로 해결할 수 있습니까?
JAVA_HOME
경로를 추가이 있는지 확인 될 수 있을까? 그들이 튜토리얼을 따르지 않았다면 당신의 아이디어는 아무것도 찾을 수 없을 것입니다.
그러나 문제는 Windows 및 Mac OS에서
JAVA_HOME
을 찾는 것입니다.
JAVA_HOME
을 찾으려면 터미널 명령을 사용할 수 있습니다.
맥 OS : (source : 검증되지 않은 이후 사용 가능한 맥 없음)
/usr/libexec/java_home
윈도우 OS : (사용 cmd.exe
명령 행)
옵션 1 : 일반적를 set
새 항목 추가 환경 변수에 넣습니다. 매개 변수없이 사용하면 기존 환경 변수 만 나열됩니다.
JAVA_HOME=C:\Program Files\Java\jre1.8.0_102
JDK_HOME=C:\Program Files\Java\jdk1.8.0_102
JRE_HOME=C:\Program Files\Java\jre1.8.0_102\jre
옵션 2 : 나를 포함한 긴 텍스트의 결과를 제공
set
나에게 한 결과를 제공
for %i in (java.exe) do @echo. %~$PATH:i
(시스템의 현재 Java.exe
경로를 가져옵니다) : C:\Program Files\Java\jre1.8.0_102\bin\java.exe
옵션 3 : Windows의 나는 최선의 선택은 사용자의 currentVersion
용 Windows 레지스트리을 확인하고 특정 CurrentVersion을의 JavaHome
을 확인하는 것입니다 생각합니다.
(a)는 자바 Windows에서 사용 현재 버전 확인 ...
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\ /v "CurrentVersion" /s
참고 : 또는 바로 다음 단계에 대한 정확한 숫자를 얻기 위해 java -version
을 (B).
(b)는 위의 발견 버전을 기반으로 자바 홈 경로 확인 (예 : 1.8 또는 1.8.0_102) ...
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\ /v "JavaHome" /s
연습 cmd.exe
창의 위의 옵션을 사용하면 출력을 쉽게 볼 수 있습니다.
나중에 AS3 코드에서 Regular Expression
또는 String
함수를 사용하여 필요한 번호 또는 디렉토리 경로를 추출 할 수 있습니다.
옵션 ++ : 다른 옵션은 파일 위치 c:\
드라이브 (폴더)를 검색 할 where /r c:\ java.exe
를 사용하여 포함하지만, 대형 드라이브의 속도가 느려질 수 있습니다 것은 (aphabetical하고 모든 하위 폴더 검색).
는 당신은 너무 아래의 Windows에 대한 것을 옵션 1을 할 수있는 간단한 예입니다 환경 변수 (안 레지스트리)에 대해 물었다.
(PS : 당신이 에 대해 오류가 발생하는 경우 IDE에서 테스트 할 때 당신이되지 않는다는 것은 있어야 수출 런타임 버전 나중에 그런 다음 AIR 설정에서 만 "확장 바탕 화면"을 체크 "기본 프로세스는 지원되지 않습니다" 똑딱 똑딱 똑딱 "데스크톱").
자동으로 CMD.exe를 열고 set
명령을 전달하는 Windows 용 테스트 가능한 코드 예제는 반환 된 텍스트 출력을받습니다. 코드를 단축 할 수 있습니다 ...
package {
import flash.display.MovieClip;
import flash.events.*;
import flash.errors.*;
import flash.desktop.NativeProcess;
import flash.desktop.*;
import flash.filesystem.File;
import flash.utils.ByteArray;
public class Java_Get_Path_v3 extends MovieClip
{
private var NProcessExe:File;
private var NProcess :NativeProcess; //external Process (eg: notepad.exe)
private var nativeProcessStartupInfo :NativeProcessStartupInfo;
private var NProcess_Args :Vector.<String> = new Vector.<String>(); //Process startup options
private var str_CMD_Output :String = "";
private var str_Java_Home :String = "";
private var str_JDK_Home :String = "";
private var str_JRE_Home :String = "";
private var temp_Int :int = -1;
public function Java_Get_Path_v3()
{
//# 1) setup Native Process (Command Line runs in background (no window))
createNativeProcess();
//# 2) get Java "Home" path from Windows via "Environment Variables";
get_Java_Path(); //is via stdout
}
private function createNativeProcess():void
{
if (NativeProcess.isSupported)
{
trace("## doing FUNCTION : createNativeProcess()");
var pathToEXE:String = "c:/windows/system32/cmd.exe";
NProcessExe = File.applicationDirectory.resolvePath(pathToEXE);
if (NProcessExe.exists)
{
//# initialise Process
NProcess = new NativeProcess();
//# add Process listeners for events
NProcess.addEventListener(ProgressEvent.PROGRESS, STD_onOutputData);
NProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, STD_onOutputData);
NProcess.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, STD_onErrorData);
NProcess.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, STD_onIOError);
NProcess.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, STD_onIOError);
}
else
{ trace("The specified .exe file was not found"); }
}
else //# if NOT suppoNativeProcess.
{
trace("Native Process not supported in this mode (use only \"Extended Desktop\" when debugging)");
}
}
private function get_Java_Path():void
{
//# use to get Java Home path
NProcess_Args[0] = ("\/c" + "set");
//# use to get Java version
//NProcess_Args[0] = ("\/c" + "java -version");
//# start the Native Process (eg: silent running of CMD.exe)
//# triggers :::: public function STD_onOutputData
nativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = NProcessExe;
nativeProcessStartupInfo.arguments = NProcess_Args;
NProcess.start(nativeProcessStartupInfo);
}
private function update_String_with_Path():void
{
trace("## doing FUNCTION : update_String_with_Path()");
//trace("str_CMD_Output : " + str_CMD_Output);
temp_Int = str_CMD_Output.indexOf("JAVA_HOME"); //trace("temp_Int :" + temp_Int);
str_Java_Home = str_CMD_Output.substring(temp_Int, (str_CMD_Output.indexOf("\n", temp_Int)));
temp_Int = str_CMD_Output.indexOf("JDK_HOME"); //trace("temp_Int :" + temp_Int);
str_JDK_Home = str_CMD_Output.substring(temp_Int, (str_CMD_Output.indexOf("\n", temp_Int)));
temp_Int = str_CMD_Output.indexOf("JRE_HOME"); //trace("temp_Int :" + temp_Int)
str_JRE_Home = str_CMD_Output.substring(temp_Int, (str_CMD_Output.indexOf("\n", temp_Int)));
trace("==================================");
trace("str_Java_Home : " + str_Java_Home);
trace("str_JDK_Home : " + str_JDK_Home);
trace("str_JRE_Home : " + str_JRE_Home);
}
public function STD_onOutputData(event:ProgressEvent):void
{
trace("## doing FUNCTION : STD_onOutputData(...)");
if (NProcess && NProcess.running)
{
if (NProcess.standardOutput.bytesAvailable > 0)
{
trace("got bytes in... STD OUT : ");
//# Receive CMD.exe output (UTF bytes) into String...
str_CMD_Output = NProcess.standardOutput.readUTFBytes(NProcess.standardOutput.bytesAvailable);
trace("str_CMD_Output.length : " + str_CMD_Output.length + " characters");
trace("## end of... STD_Out ::: ");
update_String_with_Path();
}
}
}
public function STD_onErrorData(event:ProgressEvent):void
{
trace("## doing FUNCTION : STD_onErrorData(...)");
if (NProcess.running == true)
{
//# sometimes Native Process output is in std-Error instead of std-Output
//# (is decided by the running .EXE file)
trace("## end of... STD_Error ::: ");
}
}
public function STD_onIOError(event:IOErrorEvent):void
{ trace(event.toString()); }
private function STD_errorHandler(e:AsyncErrorEvent):void
{ trace('ERROR: ' + e.text); }
} //end Class
} //end Package
IDK 업데이트 란 무엇입니까? ** JDK ** (Java 응용 프로그램 컴파일 용) 또는 ** JRE ** (Java 응용 프로그램 실행 용) 경로를 찾고 있습니까? ** 당신이 시도한 것을 ** 표시하지 않음으로써 ** 의미는 ** 당신이 알아야 할 정보가 얼마나 있는지 모르므로 대답이 더 길다 ** 어쨌든 당신에게 유용 할 것입니다. –