如何在Eclipse中打包所需的外部库和源代码

时间:2014-05-10 18:28:33

标签: java mysql eclipse jar

我现在有一个非常讨厌的问题。

对于一个学校项目(星期一到期:()),我必须提交一个.JAR文件,它是一个独立的应用程序,包括来源。

但是,在Eclipse中,我没有找到如何导出源代码,同时包含所需的库。

我的BuildPath以这种方式设置:

http://image.noelshack.com/fichiers/2014/19/1399746312-owp08.png

当我这样做时:

  • 导出为可运行的JAR文件,一切都在我的程序中运行,但我没有JAR中的源

  • 导出为JAR文件,我可以添加我的源代码,但是当我尝试运行JAR文件时,我有这个例外:

  

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

以下是我的设置:

http://image.noelshack.com/fichiers/2014/19/1399746469-sans-titre.png

我真的不知道该怎么办,我现在一直在寻找几个小时,有人能帮帮我吗?

提前谢谢。

此致

Azsde。

1 个答案:

答案 0 :(得分:0)

嗯,简短的回答是eclipse并不支持直接这样做。这就是为什么大多数人在他们的项目中使用Ant或Maven等其他工具,而不是依赖IDE。

您可以通过以下两种方式之一解决eclipse在runnable jar导出向导中缺少导出源选项的问题:

  • 您可以创建一个可运行的jar,然后手动将源文件添加到其中
  • 您可以创建包含源文件的普通jar并向其添加MANIFEST.MF文件。


手动添加源文件

这是我通常认为可怕的选择,但由于这是一项家庭作业,因此有两个缓解因素:

  • 这是一次性的
  • 你时间紧迫

如果您既没有时间也没有兴趣了解有关清单的详细信息,我建议您使用此选项。


添加您自己的MANIFEST.MF

您可能已经注意到,即使您选择让eclipse在导出向导中生成清单的选项,您的jar文件也不会实际运行。如果你打开正常的' jar文件并查看生成的清单文件,它看起来像这样(对于使用一个第三方库的简单HelloWorld程序):

Manifest-Version: 1.0
Main-Class: HelloWorld

然而,如果你打开导出的可运行jar的清单文件,它将看起来更像这样(对于同一个程序):

Manifest-Version: 1.0
Rsrc-Class-Path: ./ commons-lang3-3.3.1.jar
Class-Path: .
Rsrc-Main-Class: HelloWorld
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

如您所见,生成的清单文件未能包含对第三方库的支持。

在这种情况下,您需要做的是编写自己的清单文件并将其作为项目中的资源。然后执行常规jar导出,并在向导的最后一页上选择使用工作区中的现有清单选项,并将其指向您自己的清单文件。

这样做的好处是,您可以随时导出新的可运行jar,包括源文件,并且每次都不需要手动修改。

如果您对使用清单文件感兴趣,可以在oracle的网站上找到一个很好的教程,可以帮助您入门:

http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html