冒号(:)表示路径后命令行的含义

时间:2017-09-28 22:40:05

标签: java bash

我有一个java程序,它使用Jsoup库来解析一些HTML。

要编译程序,我运行命令: javac -cp jsoup-1.10.3.jar HtmlVerify.java,其中jsoup jar位于同一目录中。

运行程序时,我运行: java -cp jsoup-1.10.3.jar HtmlVerify,我收到错误:Error: Could not find or load main class HtmlVerify

但是,当我将:添加到jar中时: java -cp jsoup-1.10.3.jar: HtmlVerify,它有效。

这里发生了什么?为什么:解决了这个问题?

编辑:修复了java个命令

2 个答案:

答案 0 :(得分:5)

类路径在:上拆分,每个条目都被视为搜索所需类的路径。 空条目将引用当前工作目录,相当于.

换句话说,你以前的命令意味着“寻找jsoup-1.10.3.jar中的课程。”

后者意味着“在jsoup-1.10.3.jar中查找类,或者在当前目录中查找”。

HtmlVerify位于当前目录中,因此只能使用后一个命令找到它。

JRE / JDK文档未提及此功能,因此请考虑使用更明确且更少混淆的-cp jsoup-1.10.3.jar:.。毫无疑问,它继承了Unix PATH中的相同行为,POSIX也asks that you avoid

答案 1 :(得分:-1)

您正在UNIX系统上运行。从这里开始:http://www.cs.cornell.edu/courses/cs212/2008sp/Compiler/Java/jars.html

IShellLinkW