【问题标题】:Run Program from IntelliJ with Command Line File Input使用命令行文件输入从 IntelliJ 运行程序
【发布时间】:2015-10-05 15:04:39
【问题描述】:

我正在运行带有 IntelliJ 14.1.15 的 OSX 10.11。

我有一个以 txt 文件为参数的程序。我可以通过 java SearchCmd test.txt 从终端运行它,然后它允许我输入搜索词并搜索该列表。

如何在 IntelliJ 中执行此操作,以便我可以单击运行按钮并读取文件,然后我可以在 IntelliJ 控制台中输入搜索词。

主类'SearchCmd'包含主方法,如下:

public class SearchCmd {

public static void main (String[] args) throws IOException {
    String name;

    // Check that a filename has been given as argument
    if (args.length != 1) {
        System.out.println ("Usage: java SearchCmd <datafile>");
        System.exit (1);
    }

    // Read the file and create the linked list
    HTMLlist l = Searcher.readHtmlList (args[0]);
}

但是,当我尝试运行它时,它会显示:“Usage: java SearchCmd”。

为了将 test.txt 文件传递​​给 IntelliJ,我在“运行/调试配置”中输入了文件路径。 很遗憾,我无法附上图片。 :-(

任何有关解决此问题并帮助我从 IntelliJ 运行它的帮助将不胜感激。

【问题讨论】:

  • 如果真的有帮助,请添加图片链接,我会编辑您的帖子。

标签: java intellij-idea


【解决方案1】:

转到Run -> Edit Configurations,选择Application,然后输入main class 名称和program arguments。然后Run

【讨论】:

  • 我将我的文件添加为程序参数,但它不起作用。 :-(
  • @aevitas 您需要添加完整路径。
  • 我使用的路径与在终端中输入的路径相同。所以,我将文件拖到终端,然后将该路径复制到 IntelliJ。
  • @aevitas 你能从终端运行它吗?拖入终端是什么意思?
  • 是的,我是。将文件从查找器窗口拖到终端中以获得完整的文件路径。 :-)
【解决方案2】:

我刚刚想通了。

因此,您需要从 IntelliJ 项目的根目录粘贴相对路径,而不是粘贴绝对路径。最重要的是,您必须省略最初的正斜杠。

所以我的文件的绝对路径可能是这样的: 计算机/项目/TestInput/itcwww-small.txt

但我需要放入 Program Arguments 的路径是: TestInput/itcwww-small.txt

我希望这对其他人有帮助。

【讨论】:

  • 来自OSX 10.11,我猜你是在 Mac OS 上运行的。在 Mac 上,绝对路径以 /Users/username/&lt;rest_path&gt; 开头,因此 Computer/project/TestInput/itcwww-small.txt 不是绝对路径。
【解决方案3】:

我遇到了同样的问题,并且对这个问题的先前答案感到非常困惑,所以这是我对像我一样迷路的任何人的解释。

项目打开。

运行 > 编辑配置....

程序中添加文件所在的整个目录 参数字段以文件格式结尾。

【讨论】:

    【解决方案4】:

    要遵循的步骤-
    1. 运行->编辑配置。


    2. 选择应用程序。



    3. 提供主类名和命令行参数并应用。

    4. 运行

    【讨论】:

      【解决方案5】:

      在“程序参数”中添加输入文件名的相对路径将允许“主”方法将参数作为“字符串”读取

      但是,为了让系统真正理解使用文件中的数据作为标准输入,似乎我们必须专门读取文件并将输入流设置为系统输入:

          try {
              FileInputStream inputStream = new FileInputStream(new File(args[0]));
              System.setIn(inputStream);
          } catch (FileNotFoundException e) {
              e.printStackTrace();
          }
      

      【讨论】:

      • 在这里输入图片描述?
      【解决方案6】:

      你需要进入菜单运行 -> 编辑配置

      选择您的配置并在 Program arguments

      字段中添加参数

      程序参数字段是命令行中类名之后出现的内容。例如:

      java MyMainClass ProgramArgument1 ProgramArgument2 ProgramArgument3
      

      在你的例子中

      java SearchCmd test.txt
      

      程序参数是test.txt

      注意:使用绝对路径或检查工作目录是否为包含您的文件的目录

      【讨论】:

      • 我将我的文件添加为程序参数,但它不起作用。 :-(
      • 使用绝对路径....检查一下。它应该有效。使用相对路径,您需要检查文件的位置。它必须存在于工作目录中。
      • 我使用的路径与在终端中输入的路径相同。所以,我将文件拖到终端,然后将该路径复制到 IntelliJ。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 2014-12-11
      相关资源
      最近更新 更多