使用Java环境变量指向备用Java文件夹
我公司的软件使用Java访问桥来正确运行 我们发现,每次Java自我更新时,我们都必须再次重新安装访问桥组件使用Java环境变量指向备用Java文件夹,java,environment-variables,java-access-bridge,Java,Environment Variables,Java Access Bridge,我公司的软件使用Java访问桥来正确运行 我们发现,每次Java自我更新时,我们都必须再次重新安装访问桥组件 有没有一种方法可以使用环境变量将Java访问桥或Java JRE指向一个我可以保护其不被更新的文件夹?当您更新Java时,它会将其安装在一个新的文件夹中并%JAVAHOME%进行更改。 我的系统上的JAVAHOME设置为C:\Program Files\Java\jdk1.7.0_13,当我更新时,13将更改为14 现在的问题是,当您安装Java访问桥时,文件会被复制到不同的文件夹中,包
有没有一种方法可以使用环境变量将Java访问桥或Java JRE指向一个我可以保护其不被更新的文件夹?当您更新Java时,它会将其安装在一个新的文件夹中并%JAVAHOME%进行更改。 我的系统上的JAVAHOME设置为
C:\Program Files\Java\jdk1.7.0_13
,当我更新时,13
将更改为14
现在的问题是,当您安装Java访问桥时,文件会被复制到不同的文件夹中,包括%JAVAHOME%。因此,当您更新Java时,新的Java主文件夹没有Java访问桥组件
除了重新安装Java访问桥,您真的什么都做不了
请参阅安装文档。这是我们附带的批处理文件:
@echo on
cd /d %~dp0
rem case sensitive jre - finds juice Java folder and puts to temp.txt into temp folder
:CHKFLEX
set temp1=%LOCALAPPDATA%\Juice\Flex
dir /AD /b %temp1% | find "jre" > %temp%\temp.txt
rem didnt find the jre folder in juice
if %errorlevel% NEQ 0 goto notfound
rem create environment variable to path found and written to temp.txt
for /f "delims=" %%x in (%temp%\temp.txt) do set temp2=%%x
rem path to juice subfolder created
set temp1
set temp2
set "_prog=%temp1%\%temp2%"
rem copy if files aren't there already
:x86
Set JAVAHOME32=%_prog%
@echo on
if exist "%JAVAHOME32%\bin\JavaAccessBridge-32.dll" goto theend
copy WindowsAccessBridge-32.dll %WINDIR%\SYSTEM32
copy JavaAccessBridge-32.dll %JAVAHOME32%\bin
copy JAWTAccessBridge-32.dll %JAVAHOME32%\bin
copy accessibility.properties %JAVAHOME32%\lib
copy access-bridge-32.jar %JAVAHOME32%\lib\ext
copy jaccess.jar %JAVAHOME32%\lib\ext
goto theend
rem Juice JRE folder not found
:notfound
echo "Alternate JRE folder not found..."
:theend
pause
尽管我们有一个更高级的批处理文件,通过检查注册表中的Java主路径,它可以复制到Juice文件夹和Java文件夹。这是一个:
@echo on
cd /d %~dp0
:REGVAL
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion') DO set CurVer=%%B
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\% CurVer%" /v JavaHome') DO set JAVA_HOME=%%B
Set JAVA_HOME
:CHKFLEX
set temp1=%LOCALAPPDATA%\Juice\Flex
dir /AD /b %temp1% | find "JRE" > %temp%\temp.txt
if %errorlevel% NEQ 0 goto notfound
for /f "delims=" %%x in (%temp%\temp.txt) do set temp2=%%x
set temp1
set temp2
set "_prog=%temp1%\%temp2%"
pause
if not exist "%systemdrive%\Program Files (x86)" (
goto x86
) else (
goto x64
)
:x86
Set JAVAHOME32=%_prog%
@echo on
if exist "%JAVAHOME32%\bin\JavaAccessBridge-32.dll" goto x86_next
copy WindowsAccessBridge-32.dll %WINDIR%\SYSTEM32
copy JavaAccessBridge-32.dll %JAVAHOME32%\bin
copy JAWTAccessBridge-32.dll %JAVAHOME32%\bin
copy accessibility.properties %JAVAHOME32%\lib
copy access-bridge-32.jar %JAVAHOME32%\lib\ext
copy jaccess.jar %JAVAHOME32%\lib\ext
:x86_next
if exist "%JAVA_HOME%\bin\JavaAccessBridge-32.dll" goto theend
copy JavaAccessBridge-32.dll %JAVA_HOME%\bin
copy JAWTAccessBridge-32.dll %JAVA_HOME%\bin
copy accessibility.properties %JAVA_HOME%\lib
copy access-bridge-32.jar %JAVA_HOME%\lib\ext
copy jaccess.jar %JAVA_HOME%\lib\ext
goto theend
:x64
Set JAVAHOME32=%_prog%
Set JAVAHOME64=%_prog%
@echo on
if exist "%JAVAHOME64%\bin\JavaAccessBridge-64.dll" goto x64_next
copy WindowsAccessBridge-32.dll %WINDIR%\SYSWOW64
copy WindowsAccessBridge-64.dll %WINDIR%\SYSTEM32
copy JavaAccessBridge-64.dll %JAVAHOME64%\bin
copy JAWTAccessBridge-64.dll %JAVAHOME64%\bin
copy accessibility.properties %JAVAHOME32%\lib
copy access-bridge-64.jar %JAVAHOME64%\lib\ext
copy jaccess.jar %JAVAHOME64%\lib\ext
:x64_next
if exist "%JAVA_HOME%\bin\JavaAccessBridge-64.dll" goto theend
copy JavaAccessBridge-64.dll %JAVA_HOME%\bin
copy JAWTAccessBridge-64.dll %JAVA_HOME%\bin
copy accessibility.properties %JAVA_HOME%\lib
copy access-bridge-64.jar %JAVA_HOME%\lib\ext
copy jaccess.jar %JAVA_HOME%\lib\ext
goto theend
:notfound
echo "not found..."
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion') DO set CurVer=%%B
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%CurVer%" /v JavaHome') DO set JAVA_HOME=%%B
set CurVer
Set _prog=%JAVA_HOME%
set _prog
if not exist "%systemdrive%\Program Files (x86)" (
goto x86
) else (
goto x64
)
:theend
您是否建议在启动时提供某种批处理文件来安装JAB或类似的东西?编写批处理文件来安装JAB将是一个好主意,但我没有提供。我认为我们将为此使用批处理文件。我将很快发布我们的想法。Java访问桥是从Java7更新6开始预装的,所以这不再是一个问题。