Project

General

Profile

バグ #3092

Windows用64bit版インストーラで構築した環境でstart-orbd.vbsを実行するとエラーとなる

Added by n.kawauchi almost 7 years ago. Updated over 6 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
-
Start date:
02/05/2015
Due date:
02/05/2015
% Done:

100%

Estimated time:

Description

スタートメニューから「Start Java Naming Service」を実行すると、下記エラーとなる。
HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Development Kit\CurrentVersionのルートが無効です

確認に使用したのはリリース予定のインストーラ:OpenRTM-aist-Java_1.1.0-RELEASE_x86_64.msi

Associated revisions

Revision 726 (diff)
Added by kawauchi almost 7 years ago

[compat] Registry key confirmation of Java has been changed. Character code has been changed to utf-8.

History

#1 Updated by n.kawauchi almost 7 years ago

  • Due date set to 02/05/2015
  • Status changed from 新規 to 解決
  • % Done changed from 0 to 100

エラーの原因は下記のレジストリキーのセット処理の判断が違うため。

strMode = objShell.Environment("Process").Item("PROCESSOR_ARCHITECTURE")

'JDKのレジストリキーをセット
If UCase(strMode) = "X86" Then  ←★ここ
    regJDKkey  = "HKLM\SOFTWARE\JavaSoft\Java Development Kit" 
Else
    regJDKkey  = "HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Development Kit" 
End If

上記のif文の判断では、64bit OSの場合は必ずElseに入ってしまう。
テスト環境のWindows7は64bit OSなので、32bit OSとしてWindows8.1 32bit評価版をインストールして環境を構築し、動作を確認した結果が以下の通り。

  • Windows8.1 32bit OS上
    • OpenRTM-aist-Java_1.1.0-RELEASE_x86.msi(32bit版)インストール。JDK7も32bit版がインストールされている。
    • ネーム・サービス 起動OK!
    • Javaがセットされているレジストリの場所は、HKLM\SOFTWARE\JavaSoft\Java Development Kit
  • Windows7 64bit OS上
    • OpenRTM-aist-Java_1.1.0-RELEASE_x86.msi(32bit版)インストール。JDK7も32bit版がインストールされている。
    • ネーム・サービス 起動OK!
    • Javaがセットされているレジストリの場所は、HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Development Kit
  • Windows7 64bit OS上
    • OpenRTM-aist-Java_1.1.0-RELEASE_x86_64.msi(64bit版)インストール。JDK7も64bit版がインストールされている。
    • ネーム・サービス 起動できない!
    • Javaがセットされているレジストリの場所は、HKLM\SOFTWARE\JavaSoft\Java Development Kit

以上の結果から、64bit OS上の場合はJavaのタイプ(32bit or 64bit)に合わせてレジストリキーをセットするように修正した。
(この修正と合わせて、文字コードをutf-8に変更した)
r726

'JDKのレジストリキーをセット
regJDKkey  = "HKLM\SOFTWARE\JavaSoft\Java Development Kit" 
If not (UCase(strMode) = "X86") Then
    '64bit OS
    On Error Resume Next
  regJDKkey = regJDKkey + "\" 
    If IsNull(objShell.RegRead(regJDKkey)) Then
        'キーが存在しない
        WScript.Echo "キーが存在しない" 
        '64bitのOS上に32bit版のJavaがインストールされている
        regJDKkey  = "HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Development Kit" 
    Else
        WScript.Echo "キーが存在する" 
    End If
End If

    ※ここではデバッグ用にEcho文を入れている

修正後の動作確認
  • Windows8.1 32bit OS上
    • OpenRTM-aist Java, JDK7 ともに32bit版をインストール
    • ネーム・サービス 起動OK!
    • スクリプトのEchoメッセージは表示されない・・・OK動作
  • Windows7 64bit OS上
    • OpenRTM-aist Java, JDK7 ともに32bit版をインストール
    • ネーム・サービス 起動OK!
    • スクリプトのEchoメッセージ「キーが存在しない」・・・OK動作
  • Windows7 64bit OS上
    • OpenRTM-aist Java, JDK7 ともに64bit版をインストール
    • ネーム・サービス 起動OK!
    • スクリプトのEchoメッセージ「キーが存在する」・・・OK動作

#2 Updated by n-ando over 6 years ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF