変換ガイドライン
とトラブルシューティング

 

 

       

 

変換ガイドライン

  • Java のコードの行頭に次の 6 文字 「'java 」 を付けて、Java のコードを VB のコードに挿入できます。これは、コメント行として VB では無視されますが、Java では実行されます。Java では、行の最後に 「;」 を付ける必要があります。これは、Function または Sub の内側でのみ動作します。例:

    'java Text1.setSelectionColor( Color.yellow );

  • 行頭に 'vb_only を付けることによって、Java では表示されず、VB のコードで実行されます。最終行に 'end_vb_only を付けます。Function または Sub の外側で使用するのは推奨しません。例:

    'vb_only
    Text1.Text = "hello"
    'end_vb_only

    このコードは、Java のコードでは、コメント行として表示されます。コメントとして表示させたくない場合、Windows ディレクトリの下の設定ファイル <product name>.ini ファイルに KeepVBOnlyAsComments=0 を設定してください。
  • VB Converter add-in は、最新のサービス パックが必要です。たとえば、Visual Basic 5 の SP3
  • VB で ActiveX Control を記述した場合、その ActiveX Contorol を参照してるプロジェクトには、ActiveX Contorol を含める必要があります。コントロールを Java へ変換し、コントロールへのすべての参照を自動的に作成します。
  • DLL を生成するプロジェクトおよび他の EXE プロジェクトで DLL を使用するプロジェクトを持つ場合、DLL プロジェクトおよびオリジナルの EXE プロジェクトのすべての modules、classes、UserControls を持つ新しい EXE プロジェクトを生成します。一度にコード全体を変換する際に、コンバーターを使用ください。
  • variant を使用して、variant を他の型に変換する場合、変換ルーチンの 1 つを使用しない場合、Java は自動的に、variant を正しい型に強制的に変換できません。値にアクセスする Variant で、toInt、toDouble、toDate または toString 関数の 1 つを使用する必要があります。
  • 関数の静的修飾子および get/set 関数のプロパティは対応していません。
  • 正確なタイムゾーンで日付および時刻を設定するには、Now、Date、Time 関数に user.timezone プロパティを設定する必要があります。あるいは、GMT タイムゾーンを使用します。次のように設定します:
    java -Duser.timezone=MST MyApp
  • With 文は、すべてのコンテキストで対応していません。'.' 演算子を使用してる行でエラーが発生した場合、'.' の前のオブジェクトの参照を完全に追加してください。
  • IsObject および IsNumeric で、コードを見てるプログラマが指定した型の変数のコンパイル エラーが発生します。不必要なロジックを削除することによって、より速いプログラムになります。
  • File IO
    テキスト ファイルのみ対応しております。Random または Binary の "file" のオープンには対応しておりません。
  • 関数の引数としてコントロールを渡す場合、Control だけでなく、正確に指定してください。コントロールの型を指定するプロパティにアクセスできません。例:

    Sub Foo( text As Control )

    Should be:

    Sub Foo( text As TextBox )

  • コントロールをプログラム上で移動またはサイズ変更する場合、twips ではなく pixels を使用してください。Form の ScaleMode に pixels を設定してください。
  • デフォルトで ODBC-JDBC データベース ドライバを使用する場合、windows のコントロール パネルで ODBC 設定から ODBC データ ソースを設定してください。
  • アプレットとして、プログラムを起動するには、ブラウザに Java 2 plugin をインストールしてください。
  • connection argument (接続引数) には、文字列 "" が必要です。変数ではありません。
  • Connection.Open を呼ぶか、connection string (接続文字列) を設定する際には、データベースのプロパティを作成しない場合、connection string にユーザー ID およびパスワードを埋め込まずに、別々な引数として、ユーザー ID およびパスワードを渡してください。
  • param named "cmd" を使用して、VB のコマンド ライン引数をアプレットへ渡すことが出来ます。アプリケーション場合、Java プログラムが起動時に、コマンド ラインへ値を渡してください。
  • Sub または Function への引数を指定する場合、デフォルトで引数を持つ必要があります。
    Sub test(Optional op As String = "+")
    
  • With 文は、部分的にのみ対応しています。With 文の内側で変換時に syntax エラーが発生した場合、With 文を削除し、"With" の記述の使用をすべて展開してみてください。
  • error handler (エラー処理) の内側で使用してるすべての変数を On Error 文の前で宣言してください。
    Dim op As String
    On Error GoTo ErrHandler
    ...
    ErrHandler:
      Err = "Operation " & op & " failed."
    
  • 'On Error Resume Next' および 'On Error GoTo 0' の内側には、あまり記述しないで下さい。'On Error GoTo 0' の後に、エラー チェック コードを記述してください。これで Java のコードの信頼性が高まります。
    On Error Resume Next
    x = 1 / 0
    On Error GoTo 0
    If Err Then ...
    
  • Gosub からの条件付き戻り値は、対応していません。各 Gosub につき Return 文は、一つのみとなります。
  • AD の以前のバージョンで生成された Java のコードを編集した場合、AD ライブラリの新しいバージョンを使用するには、変更箇所を再生成および redo する必要があります。修正したすべての個所を見つけるには、windiff を使用します。
  • 日付の操作に Date に CDbl を使用することが出来ます。そして、Date 変数に割り当てることが出来ます。
  • connection string (接続文字列) に jdbc driver および jdbc url を使用して、プログラム上で、db connection open にそれらを設定できます。
  • メニュー 項目をチェックする場合は、デザイン時にチェックし、またはチェックしない場合、Form_Load にチェックを外します。
  • Java の座標は pixels なので、最大限の互換性を持つには、forms、frames および pictureboxesso のスケールモードに、twips ではなく pixel を設定する必要があります。
  • VB では、関数でも (たとえば rs.EOF() のように) プロパティを使用できます。変換時に syntax エラーが発生した場合、VB のコードで '()' を削除してみてください (たとえば、rs.EOF のように)。
  • VB では、プロパティのように、引数を必要としない関数を使用できます。変換時に syntax エラーが発生した場合、VB のコードで、関数の終わりに '()' を追加してみてください。
  • Variant 以外の要素を持つ collection class を記述した場合、<インストール ディレクトリ>\Rules ディレクトリの custom.vb2java ファイルに拡張ルールを追加する必要があります。 たとえば、class clsUser のインスタンスを追加できる collectionUser と呼ばれるコレクションがある場合、次のように追加します:
    class clsUser
    
    class collectionUser extends UserCollection
    attribute 1based
    default Item
    property clsUser Item
    get = $obj$.getItem( $index_var$ )
    set = $obj$.Add( $val$, $index_var$ )


Conversion Rule File Notes

  • Collection の subclass のいかなる前方の宣言は、以下の例のように前方の宣言で定義する必要があります:

    class Fields extends Collection

    not just: class Fields


トラブルシューティング

  1. どのような時に Java のコードをコンパイル時に次のようなエラーが発生しますか? " Package diamondedge.vb not found in import" (import に diamondedge.vb パッケージが見つかりません) これは、classpath 環境変数が正確に設定されていないことを表しています。Java 製品をインストール時に、Java 製品はこの変数を変更し、この問題が起きます。Diamond Edge 製品は、この変数を設定しますが、他の Java 製品をインストールすることによって、この変数を変更してしまいます。VB Converter をアンインストールして、再インストールするか、または手動で、classpath を編集できます。手動で編集する場合、classpath 変数に、"." と "<installdir>\vbc.jar" があることを確認してください。ディレクトリ パスを ";" で区切ります。NT の場合、Environment タブでシステム コントロール パネルから設定します。Win95 以降では、autoexec.bat ファイルで設定する必要があります。たとえば、デフォルトのディレクトリに VB Converter をインストールした場合:
    set CLASSPATH=.;c:\Program Files\VB Converter\vbc.jar
    Win95 の場合、再起動する必要があります。NT の場合、VB を閉じて、VB を再起動する必要があります。
    すべて正確にインストールすると、エラー無しで、すべてのサンプルはコンパイルされます。上記の方法で解決できない場合、DOS プロンプトで "set" と入力して、環境変数をご報告ください。また、Windows ディレクトリ以下の VBConverter.ini ファイルの内容もご報告ください。

  2. どのような時に Java のコードをコンパイル時に次のようなエラーが発生しますか? " Package diamondedge.swing not found in import" (import に diamondedge.swing パッケージが見つかりません)

    これは、classpath 環境変数が正確に設定されていないことを表しています (前述の説明を参照してください)。このパッケージは、"<installdir>\dsuite_eval.jar" にあります。これは、Diamond Control Suite のオプションのパッケージです。

  3. サンプル プログラムを変換しようとすると、"CreateProcess failed" (CreateProcess 失敗) エラーまたはエラー無しで、"Compilation failed" (コンパイル失敗) となります。

    最も一般的な原因は、VB Converter のオプション (Environment タブ) で指定した Java コンパイラのパスが正しくないことが考えられます。実際の Java コンパイラのファイル名とその場所を正しく指定しているか確認してください (一般的には javac. exe)。

    Browse ボタンを押下して、指定したパスを入力すると、Windows ダイアログを使用して、javac.exe を選択できるので、正確にパスを入力できます。

  4. アプレットを起動時に、ブラウザのステータス バーに "noninit" または "applet not initialized" と表示されます。この問題の原因は何ですか?

    Java Console に完全なエラー メッセージと原因が表示されます。Java 2 を使用してる場合、デフォルト オプションで、Programs フォルダの Start ボタンから "Java Plugin Control Panel" を起動することによって、Java Console を有効にする必要があります。これがない場合、Java 2 JRE または SDK がインストールされていません。Java Plugin Control Panel で、Show Java Console チェックボックスをチェックしてください。ブラウザで Java 2 Applet を起動する度に、Java Console は表示します。

    Java 1.1 Applet として起動してる場合、built-in Java エンジンを使用し、Java Console を起動する必要があります。Netscape では、Communicator->Tools->Java Console メニュー アイテムをクリックし、Internet Explorer では、View->Java Console メニュー アイテムをクリックします。

    例外ではない class がある場合、Java class ライブラリが正常にインストールされていません。ドキュメントの配布の章を参照してください。

  5. VB Converter の "Run Java" でデータベース アプリケーションを起動すると、データベース アプリケーションは動作しますが、IE では動作しません。

    Microsoft が JBDC ドライバの名前を変更しています。IE で動作させるためには、VB Converter のドライバの名前を変更する必要があります。

    1. VB Converter Options ダイアログを開いて、Database タブに変更してください。
    2. "Add Driver" を押下して、com.ms.jdbc.odbc.JdbcOdbcDriver を入力して、OK を押下します。
    3. dmv(sun.jdbc.odbc.JdbcOdbcDriver) Data Source を選択して、Setup を押下します。
    4. jdbc ドライバのコンボボックスから "com.ms.jdbc.odbc.JdbcOdbcDriver" を選択します。OK を押下します。
    5. AWT (Java 1.1) オプションが選択されていることを確認してください。または、IE 用に Java 2 plug-in をインストールする必要があります。
    6. VB Converter のツールバーの Make Java ボタンをクリックして、IE で生成された .html ファイルを再起動します。

  6. VB Converter の "Run Java" ボタンでアプリケーションを起動すると、動作しますが、IE や Netscape などのブラウザでは動作しません。 考えられる原因の一つは、Java 2 swing controls を使用しています (VB Converter Options ダイアログで設定) 。ご使用のブラウザに Java 2 plugin をインストールする必要があります。VB Converter は、Java 2 plugin を使用するように .html ファイルを生成します。Java 2 plugin を使用した HTML に関しては、以下の詳細情報を参照してください:
       http://java.sun.com/products/plugin/1.2/docs/tags.html

  7. ブラウザでアプリケーションを起動時に、Java Console でセキュリティや "access denied" などのエラー メッセージに関する例外が発生します。

    もっとも起こり得ることは、Java ではアプレットが実行できない、ネイティブ コードをアプレットが実行しようとしています。最も一般的なネイティブ コードは、JDBC-ODBC ドライバです。このドライバは、Windows ネイティブ コードを使用するので、Java のセキュリティ違反となり、アプレットでそのドライバを使用できません。Java 2 では、これを使用できるように、セキュリティ ポリシーをカスタマイズできます。

    その他の一般的な原因としては、Java 2 では、セキュリティ モデルがより柔軟なので、発生します。デフォルトのセキュリティ パーミッションは、非常に硬く、セキュリティ パーミッションを変更しない場合、アプレットを起動できません。以下の方法の1つをご使用ください:

    • Java 2 plugin を使用してる場合、ご使用のマシンのセキュリティ オプションを変更できます。Java には、policytool と呼ばれる、ツールがあります。または、<JRE install dir>\lib\security ディレクトリの java.policy ファイルを編集できます。以下の方法で、ローカルのハード ディスクからロードされた Java プログラムが、ご使用のコンピュータにフル アクセスできます。これは、Java 1.0 の sandbox security model に非常に似ています。 java.policy file に、以下の行を追加します:
      grant codeBase "file:/-" {
      permission java.security.AllPermission;
      };
    • コマンドラインまたはデスクトップ ショートカットからスタンド アロン アプリケーション として起動してください。html および java のコードが存在するディレクトリに "Start in" と指定してください。
    • アプレットを信頼できるように、そしてアプレットのセキュリティ マネージャを OFF にして、ブラウザを設定するために、ブラウザでアプレットを "signed applet (著名付きアプレット)" にしてください。このためには、jar ツールを使用して、jar ファイルを作成し、jarsigner ツールを使用して、デジタル著名を提供します。
    • ODBC を使用する場合、Windows コントロール パネルで Windows ODBC ドライバを正しく設定してください。また、VB Converter Options ダイアログ (Database タブ) で、データ ソースが設定されていることを確認してください。
    • IE および Java 1.1 AWT オプションを使用してる場合、上記のメモ を参照してください。
    • ネットワーク (Type 3 または 4) を使用する場合は、違う JDBC ドライバを使用してください。ご使用のデータベースの製造元が作成した JDBC ドライバを使用することを推奨いたします。Microsoft 社以外の多くのデータベースは、JDBC ドライバを装備しています。ご使用のデータベースが JDBC ドライバを供給していない場合、3rd パーティ製のドライバをご使用ください。次の Web サイトに、利用可能な JDBC ドライバの一覧があります:
         http://servlet.java.sun.com/products/jdbc/drivers
      

    Java Security Documentation: 以下は、Java セキュリティ モデルの説明およびブラウザでコードを起動するための詳細情報のドキュメントとなります。

       Java Security FAQ
       Java Security Guide 
       Java Security Home
       Java Security Restrictions
  8. JDBC-ODBC ドライバによるトラブル. 違うドライバを使用してください。ご使用のデータベースの製造元が作成した JDBC ドライバを使用することを推奨いたします。ご使用のデータベースが JDBC ドライバを供給していない場合、3rd パーティ製のドライバをご使用ください。次の Web サイトに、利用可能な JDBC ドライバの一覧があります:
       http://servlet.java.sun.com/products/jdbc/drivers
    

  9. Java の機能にはないもので、VB はデフォルトで "pass by reference (参照渡し)" を使用します。

    関数の内側で値を変更し、Variant への関数呼び出し内で新しい値を使用して、引数のデータ型を変更してみてください。例,

    Sub CallingSub()
    Dim intRef as Integer
    test intRef
    Debug.Print intRef
    End Sub
    
    Sub test(i as Integer)
    i = 3
    End Sub
    
    Change to:
    
    Sub CallingSub()
    Dim intRef as Variant
    test intRef
    Debug.Print intRef
    End Sub
    
    Sub test(i as Variant)
    i = 3
    End Sub
    
    The following would be generated:
    
    void CallingSub()
    {
    Variant intRef = new Variant();
    test( intRef );
    System.out.println( intRef );
    }
    
    void test( Variant i )
    {
    i.set( 3 );
    }
  10. Form/PictureBox で描いたものが、Java では違うものとなります。

    scale mode を Pixel に変更してください。

  11. 生成されたフォームが Java IDE のスクリーン ビルダーで表示されません、また関連する Java IDE から "import diamondedge.vb.*" 文へ Java コンパイル エラーが発生します。
    • Visual Cafe:
      1. VB Converter Options ダイアログの Environment タブで、"Java IDE" の設定を Visual Cafe に変更し、Java のコードを生成してください。
      2. Visual Cafe で、File->Add Component to Library を選択してください。Open ダイアログから、インストール ディレクトリから .jar ファイルを選択してください。このファイルには、diamondedge.vb パッケージのすべてのコンポーネントが含まれます。
    • JBuilder
      1. VB Converter Options ダイアログの Environment タブで、"Java IDE" の設定を JBuilder に変更し、Java のコードを生成してください。
      2. JBuilder で、File->Open ファイル メニュー アイテムを選択してください。Open ダイアログから、Java のソースで生成される .jpr ファイルを選択してください。
      3. Project->Project Properties メニュー アイテムを選択してください。そして、Required ライブラリ タブを選択してください。
      4. diamondedge エントリを選択して、編集ボタンを押下してください。
      5. 追加ボタンを押下して、クラス ファイルを追加してください。そして、 VB Converter のインストール ディレクトリから vbc.jar ファイルを選択してください。このファイルには、diamondedge.vb および diamondedge.ado パッケージのすべての Java コンポーネントが含まれます。
    • その他

      クラス ライブラリの追加方法は、Java IDE のドキュメントを参照してください。インストール ディレクトリの .jar ファイルを IDE へ追加するには、 プロジェクトをコンパイルし、他の IDE で起動するのが一般的に最も簡単な方法です。

  12. VB Converter Report ウィンドウが文字化けします。

    以下の作業を行ってください:
    1. windows ディレクトリ以下の VBConverter.ini ファイルを開きます。
    2. [VBConverter] セクションの下に以下の項目を入力します。

      ReportFontName=MS Gothic