1

我公司的软件使用 Java Access 桥接器才能正常运行。

我们发现,每次 Java 更新自身时,我们都必须再次重新安装 Access Bridge 组件。

有没有办法使用环境变量将 Java Access Bridge 或 Java JRE 指向可以防止更新的文件夹?

4

2 回答 2

0

当您更新 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上的安装文档。

于 2013-05-16T17:25:14.570 回答
0

这是我们使用的批处理文件:

@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
于 2013-06-13T16:26:40.127 回答