我使用Eclipse(3.4)并且我的类编译时没有警告或错误。 我的项目使用外部jar文件。
在从其他项目(而不是在Eclipse)中使用此类时,我需要将外部jar文件放在哪里才能获得java.lang.NoClassDefFoundError
?
我可以将jar解压缩到项目文件夹中,但这感觉不对。
编辑:这个问题不是关于在Eclipse中导入jar,而是在Eclipse之外使用它们。
答案 0 :(得分:57)
如果您想将JAR文件包含到Eclipse项目中,通常会在项目文件夹中创建一个“lib”文件夹,并将文件放在那里。然后你需要告诉eclipse将它包含在你的类路径中,这样你的代码就可以在eclipse中编译和运行。
要做到这一点:
- 进入项目的属性
- 在左侧栏中选择“Java Build Path”
- 选择窗口中央部分的“库”选项卡
- 单击Add JARs按钮 - 这将在eclipse中为您提供项目列表 - 展开您的项目并进入lib文件夹 - 您的jar将在那里。
- 选择JAR,单击“确定”,然后再单击“属性”窗口中的“确定”。
您的代码现在将编译并运行。
答案 1 :(得分:19)
将其放入jre/lib/ext
文件夹
所有关于类路径的说法都是正确的,但这是一个让它生存的一致而明智的地方。
您可以通过查看Windows上的JAVA_HOME环境变量找到您的jre文件夹。
答案 2 :(得分:7)
你把它放在哪里并不重要,但你需要配置你的其他非Eclipse项目把外部jar放在它的类路径中 - 或者如果你必须的话,使用扩展目录机制。 (这更容易,但明确表示更好。)
答案 3 :(得分:5)
西蒙的回答似乎是最好的,但现在有点过时了。用谷歌搜索了这个Oracle文档Installed extensions。
从Java 6开始,扩展JAR文件也可以放在一个独立于任何特定JRE的位置,这样扩展就可以被系统上安装的所有JRE共享。
它表示对于Windows,您应该将扩展名放在%SystemRoot%\ Sun \ Java \ lib \ ext。
答案 4 :(得分:1)
你只需要在一个不包含在eclipse工作区的文件夹中使用-classpath
选项引用它,即根本不依赖于eclipse。
警告,如果您使用java -jar
选项(see this question)
-cp
执行其他项目
答案 5 :(得分:0)
我把它放到一个新文件夹中。此文件夹必须包含在构建路径中。 它是在Eclipse中还是在外面并不重要。 Eclipse有一个特定于项目的构建路径,它将此路径传递给javac。 如果要在Eclipse之外执行javac,则必须手动传递构建路径。
答案 6 :(得分:0)
我知道这不是你要问的,但你考虑过使用Maven吗?像汇编这样的插件可能会在这些情况下有所帮助。
答案 7 :(得分:0)
在Eclipse中有一个jar,正如James Camfield写的那样。
然后,当您构建(Ant,Maven,手动)进行分发时,请确保jar文件包含在应用程序jar或war或ear或任何文件中,并且任何启动脚本都使用以下命令将其包含在类路径中: java的classpath命令行选项,如VonC所写。
不要担心将jar放在java扩展文件夹中,所有这一切都会让你在将代码发送给第三方时忘记它,因为它们不会设置它在他们的最后。
答案 8 :(得分:0)
创建一个共享的lib目录并放置这个jar,以及你可能拥有的任何其他常见的jar文件。如果您使用Maven,那么您已经以本地仓库的形式使用它。
在Eclipse中,为此目录创建一个类路径变量,然后使用它来引用项目中的jar文件。如果您有多个项目符合这些条件,它将使生活更轻松。如果从本地驱动器转到网络驱动器,它还可以轻松更改根目录的位置。
在外部应用程序中,您还将在apps类路径的共享位置包含此jar文件。