Java 外置罐子放在哪里?

Java 外置罐子放在哪里?,java,eclipse,jar,eclipse-3.4,ganymede,Java,Eclipse,Jar,Eclipse 3.4,Ganymede,我使用Eclipse(3.4),我的类编译时没有警告或错误。 我的项目使用一个外部jar文件 当从另一个项目(不在Eclipse中)使用此类时,为了不获取java.lang.NoClassDefFoundError,我需要将这个外部jar文件放在哪里 我可以将jar解压缩到项目文件夹中,但感觉不太对劲 编辑:这个问题不是关于在Eclipse中导入JAR,而是在Eclipse之外使用JAR。将JAR放在何处并不重要,但您需要配置其他非Eclipse项目以将外部JAR放在其类路径中,或者如果必须的话

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

当从另一个项目(不在Eclipse中)使用此类时,为了不获取
java.lang.NoClassDefFoundError
,我需要将这个外部jar文件放在哪里

我可以将jar解压缩到项目文件夹中,但感觉不太对劲


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

将JAR放在何处并不重要,但您需要配置其他非Eclipse项目以将外部JAR放在其类路径中,或者如果必须的话,使用extensions目录机制。(这更容易,但明确化可能更好。)

我将其放在一个新文件夹中。此文件夹必须包含在生成路径中。 不管它是在日食中还是在日食之外。Eclipse有一个特定于项目的构建路径,它将该路径传递给javac。
如果您想在Eclipse之外执行javac,您必须手动传递构建路径。

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


警告,如果使用
-cp
选项()引用外部jar,则可以使用
java-jar
执行其他项目。

将其放入
jre/lib/ext
文件夹中

关于类路径的所有说法都是正确的,但对于它来说,这是一个始终如一且明智的地方


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

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

为此:
-进入项目的属性
-在左侧列中选择“Java构建路径”
-选择窗口中心部分的“库”选项卡
-单击AddJARS按钮-这将为您提供eclipse中的项目列表-展开您的项目并放入lib文件夹-您的jar将在那里。
-选择JAR,单击“确定”,然后在“属性”窗口中再次单击“确定”。


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

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

正如詹姆斯·卡姆菲尔德所写的那样,在Eclipse中有一个罐子

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


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

创建一个共享库目录,并将此jar以及您可能在其中的任何其他常见jar文件放置在那里。如果您使用的是Maven,那么您已经以本地回购的形式拥有了它

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


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

Simon的答案似乎是最好的,但现在有点过时了。谷歌搜索了这个甲骨文文档

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


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

很有趣,但我的计算机上有三个JRE和三个JDK,我不认为我自己也复制了我需要的所有库。您可能有三个(我也有),但您在任何时候都只使用一个,这是由您的Java_主页定义的。另外,对于不同的JRE,您的第三方工具可能有不同的版本,因此,如果您不采用这种方法,您的复制问题正好相反。这就是jre/lib/ext的用途。简言之,它非常有用。我没有配置或维护非Eclipse项目。事实上,我只写了几个类,其中一个类使用了jar文件中的另一个类,所以你根本不能用类路径来配置另一个项目?那迟早会咬你的。不要绕过这个限制,而是尝试修复它。代码确实在eclipse中编译。在eclipse之外运行时(即另一个GUI调用jar内的函数),我会得到NoClassDefFoundError。或者,您可以右键单击jar,然后单击BuildPath->Add to Build Path。在eclipse之外运行任何程序时,您必须提供eclipse项目二进制文件(如果没有构建到jar中)在你运行的任何程序的类路径中,我完全不知道在哪里添加jar。在创建的lib文件夹中?或者在war/WEB-INF/lib内部?只是为了确认这在2020年和Visual Studio代码中运行良好。我将osgi框架jar添加到C:\Program Files\Java\jdk1.8.0\u 241\jre\lib\ext中,关闭并打开Visual Studio代码,并且能够正确导入库。作为个人说明,我喜欢这种方法,因为它是JDK本身应该存在的东西。