プロジェクト

全般

プロフィール

バグ #3092

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

n.kawauchi約9年前に追加. ほぼ9年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
-
開始日:
2015/02/05
期日:
2015/02/05
進捗率:

100%

予定工数:

説明

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

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

関係しているリビジョン

リビジョン 726 (差分)
kawauchi が約9年前に追加

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

履歴

#1 n.kawauchi約9年前に更新

  • 期日2015/02/05 にセット
  • ステータス新規 から 解決 に変更
  • 進捗率0 から 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 n-andoほぼ9年前に更新

  • ステータス解決 から 終了 に変更

他の形式にエクスポート: Atom PDF