无法从终端设置Java类路径

时间:2014-01-20 19:58:43

标签: java macos terminal classpath

我的目录结构如下:/User/JAVA/MyProject/

MyProject文件夹中,我有Main.javaHelper.java个文件

JAVA文件夹中,我有两个JAR文件:jar1.jarjar2.jar

我想将classpath设置为这两个JAR,以便我可以在Main.javaHelper.java文件中使用它们。非常简单。

为此,我在终端上尝试了以下(以及许多其他变体):

user:MyProject $ javac -cp“/User/JAVA/jar1.jar:/User/JAVA/jar2.jar:。” Main.java

编辑:我现在正在按照建议使用此命令,并收到相同的错误

user:MyProject$ javac -cp "/User/JAVA/jar1.jar:/User/JAVA/jar2.jar:." Helper.java Main.java

从我读过的内容来看,这应该有效。我已经指定了两个JAR的绝对位置,我用冒号:(我在OSX上)将它们分开,我还包含了我当前的目录.。然后,我使用main指定了包含Main.java方法的文件。

不幸的是,当我尝试编译时,我不断收到JAR中类的方法的“找不到符号”。

此外,当我尝试System.out.println(System.getProperty("java.class.path"));时,我收到以下输出.,表示我的类路径仍然设置为我当前的目录。


我的错误是:

/User/JAVA/MyProject/Helper.java:13 cannot find symbol
symbol: variable StdOut
location: class Helper

要注意: 当我在Eclipse中打开我的项目并通过IDE添加类路径时,一切都按预期工作,并且在编译期间没有出现错误消息。尽管如此,我仍然想知道如何在终端和没有IDE的情况下做到这一点。

我做错了什么,我该如何解决这个问题? 感谢。

2 个答案:

答案 0 :(得分:3)

在编译或运行时使用-cp设置类路径。这会覆盖(忽略)您在env变量CLASSPATH中放入的任何内容。

由于您没有发布您收到的实际错误,我将猜测丢失的符号来自{em>您的其他类 Main正在引用。将其添加到命令:

  

javac -cp“/User/JAVA/jar1.jar:/User/JAVA/jar2.jar:。” Helper.java Main.java

由于OP发布实际错误而导致编辑:您的班级中有一个错误,导致其无法编译。它与jar文件或类路径无关。您正在尝试使用/引用不存在的名为StdOut的变量。

答案 1 :(得分:1)

您应该使用分号路径分隔符(;),如Setting the classpath文档中所述。 但是你使用的是冒号(:)。

尝试使用以下命令(复制并粘贴):

javac -cp /User/JAVA/jar1.jar;/User/JAVA/jar2.jar Helper.java Main.java

来自/User/JAVA/MyProject目录。

修改

以上所有内容适用于Windows。

问题在于路径本身。