我使用Eclipse(3.4)编写的类没有警告或错误。
我的项目使用一个外部jar文件。
如果我从另一个项目(不在Eclipse中)使用这个类时,我需要把这个外部jar文件放在哪里,才能避免出现java.lang.NoClassDefFoundError
错误?
我可以将jar文件直接提取到项目文件夹中,但感觉不太对。
编辑:这个问题与在Eclipse中导入jar无关,而是关于在Eclipse之外如何使用它们。
我使用Eclipse(3.4)编写的类没有警告或错误。
我的项目使用一个外部jar文件。
如果我从另一个项目(不在Eclipse中)使用这个类时,我需要把这个外部jar文件放在哪里,才能避免出现java.lang.NoClassDefFoundError
错误?
我可以将jar文件直接提取到项目文件夹中,但感觉不太对。
编辑:这个问题与在Eclipse中导入jar无关,而是关于在Eclipse之外如何使用它们。
将其放置在您的jre/lib/ext
文件夹中。
虽然有关类路径的所有说明都是正确的,但这是一个一致且明智的位置。
您可以通过查看Windows上的JAVA_HOME环境变量来找到您的jre文件夹。
jre/lib/ext
)在最近的JDK版本中已经不存在了(从JDK 11开始)。在新的JDK版本中,什么位置是合适的? - theyuv放置位置不是很重要,但您需要配置其他非Eclipse项目将外部JAR文件放在其类路径中 - 或者使用扩展目录机制(如果必须)。 (这更容易,但明确说明可能更好。)
你只需要使用 -classpath
选项引用它,放在一个不包含在 Eclipse 工作区中的文件夹中,即完全不依赖于 Eclipse。
警告:如果你使用 -cp
选项引用外部 jar 包,那么你将无法使用 java -jar
执行其他项目(参见此问题)。
我将它放入一个新文件夹中。这个文件夹必须包含在构建路径中。 无论是在Eclipse内部还是外部都可以。Eclipse有一个特定于项目的构建路径,并将其传递给javac。 如果你想在Eclipse之外执行javac,你必须手动传递构建路径。
我知道这不完全是你所问的,但你考虑过使用Maven吗?像assembly这样的一些插件在这种情况下可能会有所帮助。
在Eclipse中有一个jar,就像James Camfield所写的那样。
然后,在构建(Ant、Maven、手动)用于分发时,请确保将jar文件包含在应用程序jar、war、ear或任何文件中,并且任何启动脚本都使用-classpath命令行选项将其包含在java的类路径中,就像VonC所写的那样。
不要担心将jar放在java扩展文件夹中,这只会让你在将代码发送给第三方使用时忘记它,因为他们在他们的端点上没有设置它。
创建一个共享的lib目录,并将这个jar文件和其他可能存在的公共jar文件放在那里。如果您正在使用Maven,则已经以本地repo的形式拥有它。
在Eclipse中,为此目录创建一个classpath变量,然后在项目中使用它来引用您的jar文件。如果您有多个符合这些条件的项目,这将使生活更加轻松。它还可以轻松地更改根目录的位置,如果您从本地驱动器转移到网络驱动器。
在外部应用程序中,您还将从其共享位置在应用程序类路径上包含此jar文件。