Reputation: 21
My company's software utilizes Java Access bridge to function correctly.
We found that every time that Java updates itself, we have to once again re-install the Access Bridge components.
Is there a way to use an environment variable to point to either the Java Access Bridge or Java JRE to a folder that I can protect from getting updated?
Upvotes: 1
Views: 520
Reputation: 21
This is the batch file we went with:
@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
Although we did have a more advanced batch file that can copy to both the Juice folder and to the Java folder by checking the registry for the java home path. Here is that one:
@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
Upvotes: 0
Reputation: 11941
When you update Java it installs it in a new folder and %JAVAHOME% changes.
JAVAHOME on my systems is set to C:\Program Files\Java\jdk1.7.0_13
and when I update that 13
is going to change to a 14
.
Now the problem is that when you install Java Access Bridge files get copied into varies folders including %JAVAHOME%. So when you update Java the new Java home folder doesn't have the Java Access Bridge components.
There is really nothing you can do except reinstall Java Access Bridge.
See the installation doco at http://docs.oracle.com/javase/accessbridge/2.0.2/setup.htm#installing-jab-64-bit.
Upvotes: 0