我需要在Java Home lib目录上复制一个扩展。但是我的问题是在Windows和Mac OS上找到Java Home。这个目录在每次idk更新时都会改变。你能用环境变量帮助修复它吗?最好的问候。
muk1a3rh1#
你 能 用 Environment Variables 帮 我 修 一下 吗 ?你 能 确定 你 的 应用 程序 用户 * * 真 的 * * 在 他们 的 账户 环境 设置 中 添加 了 JAVA_HOME 路径 吗 ? 如果 他们 没有 按照 一些 教程 操作 , 那么 你 的 想法 将 一无所获 。但 我 的 问题 是 在 Windows 和 Mac OS 上 找到 JAVA_HOME 。可以 使用 terminal 命令 查找 JAVA_HOME 。
Environment Variables
JAVA_HOME
/usr/libexec/java_home
中 的 每 一 个
cmd.exe
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
格式
Java.exe
for %i in (java.exe) do @echo. %~$PATH:i
格式它 给出 了 一 个 结果C:\Program Files\Java\jre1.8.0_102\bin\java.exe
C:\Program Files\Java\jre1.8.0_102\bin\java.exe
currentVersion
JavaHome
(a)检查 Windows 使用 的 Java * * 当前 版本 * * ...
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\ /v "CurrentVersion" /s
java -version
(b)根据 以上 找到 的 版本 检查 Java * * 主 路径 * * ( 例如 :* * 1.8 * * 或 * * 1.8.0_102 * * ) ... ...
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\ /v "JavaHome" /s
格式在 cmd.exe 窗口 中 练习 上述 选项 , 以 轻松 查看 其 输出 。稍后 , 在 您 的 AS3 代码 中 , 您 可以 使用 Regular Expression 或 String 函数 提取 您 需要 的 号码 或 目录 路径 。
Regular Expression
String
where /r c:\ java.exe
c:\
您 询问 了 有关 环境 变量 ( 而 不是 注册 表 ) 的 问题 , 下面 是 一 个 快速 示例 * * * Option 1 * * * for Windows 。(PS: 如果 在 IDE 中 进行 测试 时 出现 关于 * " 不 支持 本 机 进程 " * 的 错误 , 请 在 AIR 设置 中 * * 仅 * * 勾 选 " 扩展 桌面 " , 然后 对于 导出 的 运行 时 版本 , 您 必须 取消 勾 选 该 选项 , 现在 仅 勾 选 " 桌面 " ) 。示例 Windows 可 测试 代码 , 它 以 静默 方式 打开 CMD.exe 并 传递 set 命令 , 然后 接收 其 返回 的 文本 输出 。
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
1条答案
按热度按时间muk1a3rh1#
你 能 用
Environment Variables
帮 我 修 一下 吗 ?你 能 确定 你 的 应用 程序 用户 * * 真 的 * * 在 他们 的 账户 环境 设置 中 添加 了
JAVA_HOME
路径 吗 ? 如果 他们 没有 按照 一些 教程 操作 , 那么 你 的 想法 将 一无所获 。但 我 的 问题 是 在 Windows 和 Mac OS 上 找到
JAVA_HOME
。可以 使用 terminal 命令 查找
JAVA_HOME
。中 的 每 一 个
cmd.exe
命令 行 )set
会 将 新 条目 * * 添加 到 * * 环境 变量 中 , 但 如果 不 带 参数 使用 , 它 将 只 列出 现有 的 环境 变量 。格式
这 给 我 的 结果 长 文本 包括 :
格式
Java.exe
路径 )格式
它 给出 了 一 个 结果
C:\Program Files\Java\jre1.8.0_102\bin\java.exe
currentVersion
, 然后 检查 特定 当前 版本 的JavaHome
。(a)检查 Windows 使用 的 Java * * 当前 版本 * * ...
格式
java -version
即可 获得 正确 的 数字 , 以便 执行 下一步 ( b ) 。(b)根据 以上 找到 的 版本 检查 Java * * 主 路径 * * ( 例如 :* * 1.8 * * 或 * * 1.8.0_102 * * ) ... ...
格式
在
cmd.exe
窗口 中 练习 上述 选项 , 以 轻松 查看 其 输出 。稍后 , 在 您 的 AS3 代码 中 , 您 可以 使用
Regular Expression
或String
函数 提取 您 需要 的 号码 或 目录 路径 。where /r c:\ java.exe
来 搜索c:\
驱动 器 中 的 文件 位置 ( 文件 夹 ) , 但 在 大型 驱动 器 上 速度 可能 会 很 慢 ( 这 是 一 种 隐 式 搜索 , 搜索 * * 所有 * * 子 文件 夹 ) 。您 询问 了 有关 环境 变量 ( 而 不是 注册 表 ) 的 问题 , 下面 是 一 个 快速 示例 * * * Option 1 * * * for Windows 。
(PS: 如果 在 IDE 中 进行 测试 时 出现 关于 * " 不 支持 本 机 进程 " * 的 错误 , 请 在 AIR 设置 中 * * 仅 * * 勾 选 " 扩展 桌面 " , 然后 对于 导出 的 运行 时 版本 , 您 必须 取消 勾 选 该 选项 , 现在 仅 勾 选 " 桌面 " ) 。
示例 Windows 可 测试 代码 , 它 以 静默 方式 打开 CMD.exe 并 传递
set
命令 , 然后 接收 其 返回 的 文本 输出 。格式