我的目录结构如下:/User/JAVA/MyProject/
在MyProject
文件夹中,我有Main.java
和Helper.java
个文件
在JAVA
文件夹中,我有两个JAR文件:jar1.jar
和jar2.jar
我想将classpath设置为这两个JAR,以便我可以在Main.java
和Helper.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的情况下做到这一点。
我做错了什么,我该如何解决这个问题? 感谢。
答案 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。
问题在于路径本身。