在哪里放外部jar子?

我使用Eclipse(3.4),我的课没有警告或错误编译。 我的项目使用外部jar文件。

从另一个项目(而不是在Eclipse)使用这个类时,我需要把这个外部的jar文件放在哪里以避免得到一个java.lang.NoClassDefFoundError

我可以把jar文件解压缩到项目文件夹中,但是这并不正确。

编辑:这个问题不是关于在Eclipse中导入jar,而是在Eclipse之外使用它们。

如果你想将一个JAR文件包含到你的Eclipse项目中,你通常会在项目文件夹中创build一个“lib”文件夹,并将文件放在那里。 然后你需要告诉eclipse把它包含在你的类path中,这样你的代码就可以在eclipse中编译和运行。

要做到这一点:
– 进入你的项目的属性
– 在左边的列中select“Java Build Path”
– select窗口中间部分的“库”选项卡
– 点击添加JARbutton – 这会给你在eclipse中的项目列表 – 展开你的项目,并进入lib文件夹 – 你的jar会在那里。
– selectJAR,再单击确定,然后再从属性窗口中select确定。

您的代码现在将编译并运行。

把它放在你的jre/lib/ext文件夹中

关于class级path的一切都是真实的,但是这是一个一致而明智的生活场所。

您可以通过查看Windows上的JAVA_HOME环境variables来find您的jre文件夹。

放在哪里并不重要,但是您需要configuration其他非Eclipse项目以将外部jar放入其classpath中,或者使用extensions目录机制(如果必须的话)。 (这很容易,但是明确地说是更好的。)

西蒙的答案似乎是最好的,但现在有点过时了。 已经使用这个Oracle文档安装扩展 。

从Java 6开始,扩展JAR文件也可以放置在独立于任何特定JRE的位置,以便扩展可以被安装在系统上的所有JRE共享。

它说,对于Windows,您应该在这里放置扩展名%SystemRoot%\ Sun \ Java \ lib \ ext。

你只需要在一个不包含在eclipse工作区中的文件夹中使用-classpath选项来引用它,也就是说,它不依赖于eclipse。

警告,如果您使用-cp选项引用外部jar,则可以使用java -jar执行其他项目( 请参阅此问题 )

我把它放到一个新的文件夹中。 该文件夹必须包含在构buildpath中。 不pipe是在Eclipse还是在外面都没关系。 Eclipse具有特定于项目的构buildpath,并将此path传递给javac。 如果您想在Eclipse之外执行javac,则必须手动传递构buildpath。

我知道这不是你正在问的,但你有没有考虑过使用Maven? 一些像assembly这样的插件可能会对这样的情况有所帮助。

如詹姆斯·坎菲尔德(James Camfield)所写,在Eclipse内部有一个jar。

然后,当你为发布构build(Ant,Maven)时,确保jar文件包含在应用程序的jar文件中,或者包含在jar文件中,或者包含在war或ear文件中,任何启动脚本都使用-classpath命令行将其包含在类path中Java的选项,正如VonC写的。

不要担心把jar放在java扩展文件夹中,所有这些都会让你忘记把代码发送给第三方来使用,因为他们不会在最后设置它。

创build一个共享的lib目录,并放置这个jar文件,以及其他常见的jar文件。 如果你正在使用Maven,那么你已经有了本地回购的forms。

在Eclipse中,为这个目录创build一个类pathvariables,然后用它来引用你的项目中的jar文件。 如果你有多个符合这些条件的项目,它会让生活变得更容易。 如果从本地驱动器转到networking驱动器,也可以轻松更改根目录的位置。

在外部应用程序中,您还将在应用程序类path中的共享位置中包含此jar文件。