这里非常基本的问题。所以我有一个我创建的Java包有三个类(一个有主方法)。我正在尝试使用一些Apache Jars,并将这些添加到Eclipse中的构建路径中。但Eclipse不会让我构建并正确运行它,所以我正在尝试命令行。我添加了env var CLASSPATH并将其指向我的lib目录,该目录包含Apache Jars。但是,当我尝试使用javac时,我遇到了一堆错误:
package org.apache.xmlrpc does not exist
import org.apache.xmlrpc.client.XmlRpcClient;
我正在阅读javac的手册页,它说:
If neither CLASSPATH, -cp nor -classpath is specified, the user class path consists of the current directory.
所以我尝试将Jars复制到与我的三个源文件相同的位置,但没有变化。
有人可以告诉我我做错了吗?
感谢。
答案 0 :(得分:0)
您可以通过在命令行上指定选项-cp来编译它:
javac -cp foo.jar:bar.jar foo/bar/Baz.java
然后使用相同的选项运行它:
java -cp foo.jar:bar.jar foo.bar.Baz
答案 1 :(得分:0)
听起来您只是将类路径设置为包含jar文件的目录。您需要将其设置为单个jar文件,或使用java.ext.dirs
设置包含jar文件的“扩展名”目录。我建议使用特定的jar文件。类似的东西:
// Assuming Windows...
CLASSPATH = c:\libs\foo.jar;c:\libs\bar.jar
我个人也建议在命令行中指定类路径,而不是使用环境变量 - 后者将起作用,但如果你想针对不同的库编译不同的项目,它最终会更加繁琐。
但是,我实际建议先让Eclipse工作,而不是退回到命令行。它应该没问题 - 如果你能给我们更多关于Eclipse中失败的信息,我们可能会帮助你。
答案 2 :(得分:0)
当前目录中的jar文件不会自动包含在内;仅指正常包/目录层次结构中的.class
个文件。必须明确地添加Jar文件,或者通过像javac -cp ./*
这样的通配符添加(假设JDK6 +)
(某些操作系统可能需要转义*
以避免全局操作; OSX不会。)
答案 3 :(得分:0)
Classpath变量(或javac的命令行选项)必须明确包含所有jar。它无法通过存储在指定目录中的jar文件。
答案 4 :(得分:0)
我同意之前的答案,但我也建议使用正确的java构建工具 - 比如ant(感觉更容易使用,但不是必需的)或maven(感觉更难以使用,但真的值得学习)