![](/img/trans.png)
[英]Running a java program, having external jar dependency in a batch file
[英]Java Eclipse: Running a program with a file argument and external JAR
我正在尝试运行以下脚本: https : //algs4.cs.princeton.edu/15uf/UF.java
为此,我有:
1)打开Eclipse,创建一个名为UF的新项目,并创建一个名为UF的新类,在该类的内部,我粘贴了上面链接中的代码。
2)按照他们网站上的说明,我将他们的JAR文件保存在
/usr/local/algs4/algs4.jar
3)右键单击项目,转到“属性”,然后在“库”选项卡下有两个字段选项,“模块路径”和“类路径”。 在突出显示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");
的第一行中插入了代码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");
。
默认情况下,eclipse根目录是项目的基本目录。 因此,如果您在此处以调试模式运行,则您的参数将需要包含绝对路径(以驱动器号开头),例如C:/usr/local/algs4/algs4.jar
您将需要拥有该文件在程序运行所在的文件夹中。
仅给出/home/me/Documents/tinyUF.txt
告诉程序从当前位置向下钻取,查找home目录,me目录等。
给出绝对路径总是更加直接和安全 。 如果路径要改变/动态,则允许jar接受参数。 检查main()中的参数,并将其设置为File inputFile = arg[0]
变量,然后以这种方式处理文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.