実行するマクロ(.mac)内ディレクトリにある「.class」や「.jar」は自動的に利用可能

  • 概要

    hmJavaVMにおいて、自作のクラスをどのディレクトリに配置すればよいのかについて記述しています。

  • 実行するマクロファイルと同じ場所に「.class」や「.jar」を配置しておけばOK

    表題にあるように、「実行すマクロファイル」と同じ場所の「.class」や「.jar」は、
    1つでも、複数でも、「.class」と「.jar」が混じっていても、
    利用可能となります。

  • .classの場合、

    デバッグメッセージページ解説の中でも、
    自然と.classが利用可能となっています。

  • .jarの場合、

    .jarでも何も変わらないのですが、とりあえず手順を踏んでみましょう。
    デバッグメッセージのページで作成した「MyTest.java」ファイルを、
    「.jar」ファイル化してみることとしましょう。

    • jarコマンドでコンパイル

      jarコマンドで 適当にjarを作成
      jar cvf MyJarTest.jar MyTest.class
      

    .classを何も変更せずに、.jarにしただけですので、秀丸マクロ(MyFirstTest.mac)は何も変更する必要がありません。

    実行してみると、以下のように、.jarファイルも自動的にClassPathに追加されていることがわかります。

  • .jarの中身が、packageのクラスの場合

    それでは、.jarの中身が、パッケージのクラスだった場合を想定してみましょう。

    • MyTest.javaの変更

      MyTest.javaの内容
      package MyPackage;
      
      import hidemaru.*;
      
      public class MyTest {
      
           public static void main(String[] args)  {
                Hm.debugInfo("Java側からデバッグモニターへ");
           }
      
      }
              
    • パッケージと同じ名前のディレクトリを作成し、javaファイルをそこに入れる。

      パッケージ名と同じディレクトリを作成し、MyTest.class(ついでにMyTest.javaも)をその中に入れる

    • 親ディレクトリから、javacでコンパイル

      例のごとく、「-cp」の後は、ご自身のhmJavaVM.jarの位置に合わせてください。

      コンソールコマンドでjavac
                      javac MyPackage\MyTest.java -cp C:\usr\hidemaru\hmJavaVM.jar
              
    • jarコマンドを実行

      jarコマンドで 適当にjarを作成
      jar cvf MyJarTest.jar MyPackage
              
    • マクロ、MyFirstTest.macの書き換え

      パッケージを指定して、アクセスする必要がありますので、
      以下のようにマクロを修正します。

      MyFirstTest.macの内容
      #JVM = loaddll( hidemarudir + @"\hmJavaVM.dll");
      
      #_ = dllfuncw( #JVM, "CallMethod", "MyPackage.MyTest", "main");
      
      freedll( #JVM );
              

      というように、「MyPackage.」と付けるか、もしくは以下のように「MyPackage/」というようにとします。

      MyFirstTest.macの内容
      #JVM = loaddll( hidemarudir + @"\hmJavaVM.dll");
      
      #_ = dllfuncw( #JVM, "CallMethod", "MyPackage/MyTest", "main");
      
      freedll( #JVM );