如何将jar文件添加到类路径中?

13

我使用的是Windows系统,已经尝试在javac下使用-classpath但无效。还尝试将JAR文件移动到源代码目录,但是Java文件仍无法编译。我正在尝试在脚本中简单导入httpclient。

   import org.apache.http.client.*;

请发布您添加到类路径和目录结构中的内容。否则,我们无法帮助您。 - Radu Murzea
你能提供更多信息,比如完整的javac命令、源代码/库的组织等吗? - srkavin
3
你真的想向JDK中添加jar包吗?也许你是指编译类路径? - yair
1
尝试在javac下使用-classpath但无效。那么你的问题应该是:“如何让javac下的-classpath工作?”请勿将第三方Jars添加到JRE(或JDK)中。 - Andrew Thompson
没有必要将jar文件移动到“src”目录下,因为您不是在编译jar文件,而是使用它来编译位于“src”目录下的“.java”文件。确切地说,缺少哪个类?您确定它在您正在使用的jar文件中吗?可能是该jar文件的依赖项。 - jambriz
请回答这个编程问题:“如何让javac下的-classpath工作?”我很困惑为什么classpath无法添加httpclient-4.0.1.jar。 - user1296537
2个回答

11

-classpath命令行参数(适用于javajavac)希望您列出特定的JAR文件(和/或包含类文件的" exploded"目录)。这与Windows / UNIX PATH环境变量不同,后者仅列出包含可执行文件的目录。

因此,例如,如果要编译依赖于lib/bar.jarcom.example.Foo,则可以使用以下命令:

javac -classpath lib/bar.jar com/example/Foo.java

但我猜测你也得到了一个具体的错误信息,知道这个错误信息会有助于进一步帮助你。


使用httpclient-4.0.1.jar。无论我如何在类路径中链接它,我的Java文件都无法编译。我得到了与Java无法定位包相关的符号错误。我想知道我的Java文件中的导入语法是否需要反映我使用的包不是JDK安装的一部分? - user1296537
但是你还没有说出你的错误信息。"当我运行javac ...时,我会得到以下错误:无论什么。如果你没有收到任何错误,那么就没有问题...除非你期望看到不同的东西(在这种情况下:你期望看到什么,而你没有看到?) - Adam Batkin
我在我的Java文件中从httpclient.jar引用的任何类中都没有收到任何符号错误,例如:“无法找到符号,类defaulthttpclient()”。 - user1296537
如果您没有收到任何错误提示,那么看起来它就是正常工作的。您认为它没有正常工作的原因是什么? - Adam Batkin
请编辑您的问题并将整个控制台交互粘贴在那里。我们需要看到您输入的完整命令行以及javac打印到控制台的所有输出。 - Adam Batkin
感谢您的帮助。现在我遇到一个新的奇怪问题。尽管Netbeans已经成功编译了我的Java文件,并解决了类路径/ JAR文件的问题,但当我运行我的签名小程序时,我会遇到NoClassDefFound错误,而原始的Java文件构建时却没有发生这种错误,且已经包含了所有需要导入的HttpClient类。我已将所有HttpClient依赖的lib/jars添加到小程序的档案库中,但仍然在Java控制台中得到NoClassDefFound错误。这里有一个关于此问题的单独线程。http://stackoverflow.com/questions/10341467/java-upload-applet-request/10354260 - user1296537

7
  1. 安装JDK后,请不要将.jar文件复制到JDK文件夹中,不要轻易更改JDK配置

  2. 如果你还没有集成开发环境(IDE),我建议你下载Eclipse或Netbeans。

  3. 我建议你新建一个项目,导入或创建源代码,并为该项目设置类路径。

  4. 如果仍无法解决问题,请提供以下信息:

    a)你的操作系统和版本

    b)你的JDK和版本

    c)你使用的IDE

    d)粘贴完整的错误消息

    e)粘贴相关的代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接