52

我使用 Eclipse (3.4) 并且我的类在没有警告或错误的情况下编译。我的项目使用外部 jar 文件。

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

我可以将 jar 提取到项目文件夹中,但这感觉不对。

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

4

9 回答 9

61

如果你想在你的 Eclipse 项目中包含一个 JAR 文件,你通常会在项目文件夹中创建一个“lib”文件夹,然后把文件放在那里。然后,您需要告诉 eclipse 将其包含在您的类路径中,以便您的代码将在 eclipse 中编译和运行。

要做到这一点:
- 进入项目的属性
- 在左侧栏中选择“Java Build Path”
- 选择窗口中心部分的“库”选项卡
- 单击“添加 JAR”按钮 - 这将为您提供您在 Eclipse 中的项目列表 - 展开您的项目并进入 lib 文件夹 - 您的 jar 将在那里。
- 选择 JAR,单击 OK,然后再次从属性窗口中单击 OK。

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

于 2008-11-28T11:28:12.673 回答
24

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

关于类路径的一切都是真实的,但这是一个一致且合理的地方。

您可以通过查看 Windows 上的 JAVA_HOME 环境变量找到您的 jre 文件夹。

于 2008-11-28T11:23:51.810 回答
7

将它放在哪里并不重要,但是您需要配置您的其他非 Eclipse 项目以将外部 jars 放在其类路径中 - 或使用扩展目录机制,如果必须的话。(这更容易,但明确表示可能更好。)

于 2008-11-28T11:20:58.150 回答
6

西蒙的答案似乎是最好的,但现在有点过时了。已经用谷歌搜索了这个 Oracle 文档Installed extensions

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

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

于 2013-12-24T11:12:00.217 回答
1

您只需要使用一个-classpath选项来引用它,该选项位于一个不包含在 Eclipse 工作区中的文件夹中,即根本不依赖于 Eclipse。

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

于 2008-11-28T11:23:16.943 回答
0

我把它放到一个新文件夹中。该文件夹必须包含在构建路径中。它是在 Eclipse 中还是在外部都没有关系。Eclipse 有一个特定于项目的构建路径,并将此路径传递给 javac。如果要在 Eclipse 之外执行 javac,则必须手动传递构建路径。

于 2008-11-28T11:21:05.403 回答
0

我知道这不是您要问的,但是您考虑过使用 Maven 吗?像汇编这样的一些插件在这种情况下可能会有所帮助。

于 2008-11-28T11:32:42.087 回答
0

正如 James Camfield 所写,在 Eclipse 中有一个 jar。

然后,当您构建(Ant,Maven,手动)以进行分发时,确保 jar 文件包含在您的应用程序 jar 或 war 或 ear 或任何文件中或其中,并且任何启动脚本都使用 -classpath 命令行将其包含在类路径中正如 VonC 所写,java 的选项。

不要担心将 jars 粘贴在 java extensions 文件夹中,所有这些都会让您在将代码发送给第三方使用时忘记它,因为他们不会在最后设置它.

于 2008-11-28T11:43:59.027 回答
0

创建一个共享的 lib 目录并放置这个 jar,以及您可能拥有的任何其他常见 jar 文件。如果您使用的是 Maven,那么您已经以本地 repo 的形式拥有它。

在 Eclipse 中,为此目录创建一个类路径变量,然后使用它来引用项目中的 jar 文件。如果您有多个满足这些条件的项目,它将使生活变得更加轻松。如果您从本地驱动器转到网络驱动器,它还可以轻松更改根目录的位置。

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

于 2008-11-28T14:23:56.050 回答