我公司的软件使用 Java Access 桥接器才能正常运行。
我们发现,每次 Java 更新自身时,我们都必须再次重新安装 Access Bridge 组件。
有没有办法使用环境变量将 Java Access Bridge 或 Java JRE 指向可以防止更新的文件夹?
我公司的软件使用 Java Access 桥接器才能正常运行。
我们发现,每次 Java 更新自身时,我们都必须再次重新安装 Access Bridge 组件。
有没有办法使用环境变量将 Java Access Bridge 或 Java JRE 指向可以防止更新的文件夹?
当您更新 Java 时,它会将其安装在一个新文件夹中,并且 %JAVAHOME% 会更改。我系统上的 JAVAHOME 设置为C:\Program Files\Java\jdk1.7.0_13
,当我更新时13
将更改为14
.
现在的问题是,当您安装 Java Access Bridge 时,文件会被复制到不同的文件夹中,包括 %JAVAHOME%。因此,当您更新 Java 时,新的 Java 主文件夹没有 Java Access Bridge 组件。
除了重新安装 Java Access Bridge 之外,您实际上无能为力。
请参阅http://docs.oracle.com/javase/accessbridge/2.0.2/setup.htm#installing-jab-64-bit上的安装文档。
这是我们使用的批处理文件:
@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