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

标签 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 是我编写的一种方法。它基本上只是所提供代码的主要方法。如果有帮助的话我可以把它包括在内。我只是不想发布太多代码。

最佳答案

如果你想从另一个类调用一个类的“main”方法,请这样做:

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

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

希望这有帮助。

关于java - 如何调用接受命令行参数的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10938730/

相关文章:

java - 类路径中的多个 jar 不起作用

regex - 使用 Linux 命令行删除多个文件中的多个 HTML 行

java - 从另一个线程传输数据,与 Java 和 RXTX 库的串行链接速度较慢

java - 解析 JTextField 中的用户输入时出现问题

java - GWT 文件上传 OnClick

c - 如何在类 Unix shell 中保存交互式命令行程序的输出?

linux - 相互比较两个文本文件

java - 监控和锁定说明

java - 添加 pom.xml 后无法使用 IE 和 Chrome WebDrivers

PHP脚本在通过命令行而不是通过浏览器运行时给出输出