Java Eclipse:运行带有文件参数和外部JAR的程序

问题描述 投票:0回答:1

我正在尝试运行以下脚本:https://algs4.cs.princeton.edu/15uf/UF.java

为此,我有:

1)打开Eclipse,创建一个名为UF的新项目,并创建一个名为UF的新类,在该类中我粘贴了上述链接中的代码。

2)根据他们网站上的说明,我保存了他们的JAR文件

/usr/local/algs4/algs4.jar

3)右键单击项目,转到Properties,在Libraries选项卡下有两个字段选项,Modulepath和Classpath。突出显示Modulepath后,单击Add External JARs并导航到algs4.jar的位置。然后我为Classpath做了同样的事情,因为我认为其中一个必须是正确的。

4)此文件用于输入程序:https://algs4.cs.princeton.edu/15uf/tinyUF.txt

所以我在~/Documents下保存了这个。

5)在Run选项下,我选择Run Configurations,单击Arguments选项卡,然后键入/home/me/Documents/tinyUF.txt

6)现在当我运行程序时没有任何反应,我的意思是它绝对没有显示运行的迹象,唯一的例外是当我将鼠标悬停在Run按钮上时它显示“Run(已经运行)”。

7)因此,为了测试目的,我在主函数System.out.println("TEST");的第一行插入,这次当我运行它时,它显示Eclipse底部的控制台并打印TEST。

8)如果我将System.out.println("TEST");线向下移动一行以便int n = StdIn.readInt();首先运行,那么控制台将显示但没有任何打印,程序永远不会停止。

有关正在发生的事情的任何想法?

[编辑:我想我应该注意到我在Linux Mint 18.3 Cinnamon上运行Oxygen.2 Release(4.7.2)。当我按照说明安装Eclipse时,它们看起来有些奇怪,但无论如何我都跟着它们:它指示我制作文件夹/root/eclipse并安装到该文件夹​​,所以我做了。

[更新:在与评论者交谈后,我发现我必须将输入文件路径添加到启动配置中。现在我已经完成了,程序正确读入txt文件并输出正确的结果,除了它从不打印最后一行并且永远不会终止程序。看看代码:

public static void main(String[] args) {
        int n = StdIn.readInt();
        UF uf = new UF(n);
        while (!StdIn.isEmpty()) {
            int p = StdIn.readInt();
            int q = StdIn.readInt();
            if (uf.connected(p, q)) continue;
            uf.union(p, q);
            StdOut.println(p + " " + q);
        }
        StdOut.println(uf.count() + " components");
    }

运行代码时的行为是它成功完成while循环但从未到达行StdOut.print]ln(uf.count() + " components");

java eclipse jar
1个回答
0
投票

默认情况下,eclipse根目录是项目的基本目录。因此,如果您在此处以调试模式运行,则您的参数需要包含绝对路径(以驱动器号开头),例如C:/usr/local/algs4/algs4.jar或者您需要将该文件放在运行程序的同一文件夹中。

只是给/home/me/Documents/tinyUF.txt告诉程序从当前的位置向下钻取,寻找主目录,我的目录..等等。

给出绝对路径总是更直接,更安全。如果路径将要更改/动态,请允许jar接受参数。检查main()中的参数并将其设置为File inputFile = arg[0]variable,然后以这种方式处理文件。

© www.soinside.com 2019 - 2024. All rights reserved.