Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java环境变量指向备用Java文件夹_Java_Environment Variables_Java Access Bridge - Fatal编程技术网

使用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自我更新时,我们都必须再次重新安装访问桥组件


有没有一种方法可以使用环境变量将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开始预装的,所以这不再是一个问题。