如何调用接受命令行参数的类?

时间:2012-06-07 19:40:14

标签: java command-line

我不是一个优秀的程序员。在学校,我学习了MATLAB。所以我不知道我在做什么。

我正在使用ThingMagic M6阅读器。他们有自己的API。我想创建自己的应用程序来读取程序。我想使用他们提供的示例程序(因为我的程序似乎不起作用)。但是,提供的程序只接受命令行参数。我如何更改它,以便我可以在我的代码中将参数传递给它。

这是提供的代码:(在命令行我输入tmr://10.0.0.101)

    /**
 * Sample program that reads tags for a fixed period of time (500ms)
 * and prints the tags found.
 */

// Import the API
package samples;
import com.thingmagic.*;

public class read
{  
  static void usage()
  {
    System.out.printf("Usage: demo reader-uri <command> [args]\n" +
                      "  (URI: 'tmr:///COM1' or 'tmr://astra-2100d3/' " +
                      "or 'tmr:///dev/ttyS0')\n\n" +
                      "Available commands:\n");
    System.exit(1);
  }

   public static void setTrace(Reader r, String args[])
  {    
    if (args[0].toLowerCase().equals("on"))
    {
      r.addTransportListener(r.simpleTransportListener);
    }    
  }


   static class TagReadListener implements ReadListener
  {
        public void tagRead(Reader r, TagReadData t) {
            System.out.println("Tag Read " + t);
        }
  }

  public static void main(String argv[])
  {

      System.out.println(argv.getClass().toString());
    // Program setup
    TagFilter target;

    Reader r;
    int nextarg;
    boolean trace;

    r = null;
    target = null;
    trace = false;

    nextarg = 0;

    if (argv.length < 1)
      usage();

    if (argv[nextarg].equals("-v"))
    {
      trace = true;
      nextarg++;
      System.out.println("Trace");
    }

    // Create Reader object, connecting to physical device
    try
    { 

      TagReadData[] tagReads;
      r = Reader.create(argv[nextarg]);
      if (trace)
      {
        setTrace(r, new String[] {"on"});
      }
      r.connect();
      if (Reader.Region.UNSPEC == (Reader.Region)r.paramGet("/reader/region/id"))
      {
          r.paramSet("/reader/region/id", Reader.Region.NA);
      }
      r.addReadListener(new TagReadListener() );
      // Read tags
      tagReads = r.read(500);
      // Print tag reads
      for (TagReadData tr : tagReads)
        System.out.println(tr.toString());

      // Shut down reader
      r.destroy();
    } 
    catch (ReaderException re)
    {
      System.out.println("Reader Exception : " + re.getMessage());
    }
    catch (Exception re)
    {
        System.out.println("Exception : " + re.getMessage());
    }
  }
}

这是我试图使用它:(arg来自JTextField)

String[] argv = new String[1];
        argv[0] = arg;
readOnceApp(argv);

我觉得这个问题有一个非常简单的答案,我只是想不出来。我在互联网上搜索了几天并阅读了书籍,但仍然无法弄明白。任何帮助表示赞赏。谢谢。

编辑:readOnceApp是我写的一种方法。它基本上只是提供的代码的主要方法。我可以包括它,如果它会有所帮助。我只是不想发布太多代码。

1 个答案:

答案 0 :(得分:1)

如果要从另一个类调用类的“main”方法,请执行以下操作:

String [] args = new String [1];
args[0]= "some param";
readOnceApp.main(args);

这假设“readOnceApp”是您班级的名称。 (顺便说一句,你应该遵循使用大写类名的惯例,例如ReadOnceApp)。

希望这有帮助。