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

时间:2017-12-27 13:35:57

标签: java eclipse jar

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

为此,我有:

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

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

/usr/local/algs4/algs4.jar

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

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

所以我将其保存在~/Documents下。

5)在“运行”选项下,我选择了“运行配置”,单击“参数”选项卡,然后键入/home/me/Documents/tinyUF.txt

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

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");

1 个答案:

答案 0 :(得分:0)

默认情况下,eclipse根目录是项目的基本目录。因此,如果您在此处以调试模式运行,您的参数将需要包含绝对路径(从驱动器号开始),例如<link rel="stylesheet" href="home.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script> <div class="menu" id="menu"> <h2 class="title first">SITE</h2> <ul class=""> <li><a class="home" href="">Home</a></li> <li><a class="profile" href="">Detail</a></li> </ul> </div> <div class="imgArea float-right" id="carousel"> <ul> <li><a href="#"><img src="photo1.jpg" alt=""></a></li> <li><a href="#"><img src="photo2.jpg" alt=""></a></li> </ul> </div> <script src="carousel.js"></script>或者您需要将文件放在同一文件夹中该程序正在运行。

只是给C:/usr/local/algs4/algs4.jar告诉程序从它当前所在的位置向下钻取,寻找主目录,我的目录......等等。

总是更直接,更安全来提供绝对路径。如果路径将要更改/动态,请允许jar接受参数。检查main()中的参数并将其设置为/home/me/Documents/tinyUF.txt变量,然后以这种方式处理文件。