java - 如何在 Eclipse 中打包所需的外部库和源

标签 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

我真的不知道该怎么办,我已经搜索了几个小时了,有人可以帮我吗?

提前谢谢你。

问候,

阿兹德。

最佳答案

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

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

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


手动添加源文件

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

  • 这是一次性的
  • 你的时间不够

如果您既没有时间也没有兴趣了解有关 list 的详细信息,我会推荐此选项。


添加您自己的 MANIFEST.MF

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

Manifest-Version: 1.0
Main-Class: HelloWorld

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

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

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

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

这样做的好处是您可以随时导出一个新的可运行 jar,包括您的源文件,而无需每次都进行手动修改。

如果您对使用 list 文件感兴趣,Oracle 网站上有一个很好的教程可以帮助您入门:

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

关于java - 如何在 Eclipse 中打包所需的外部库和源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23584794/

相关文章:

java - 对字符串进行排序时,数组中的字符被删除

java - 服务器 : Null java. sql.SQLException 参数索引超出范围(1 > 参数数量,为 0)

php - SQL Join 与子查询计算不同表中具有相同 id 的记录数

c++ - MySQL C++ 连接器 Unresolved 依赖项 (VS 2015)

eclipse - InitRemoteEditJob 挂起

java - 使用 Spring Boot 在多模块项目中加载静态内容时出错

java - 如何返回正确的结果和错误列表

java - 如何在管理中检查数据库中的真/假值,并相应地重定向? (Web应用程序)

java - 无法将 String 转换为双向链表节点

eclipse - 集成 Eclipse 和 GitHub