1

我有一个带有c3p0 JAR 的 Java 保护。在 Eclipse 中编译我的项目是可行的。没有错误什么的。但是当我尝试运行我的应用程序时,它会显示以下内容:

java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/DataSources

我需要从 c3p0 给 jar 文件另一个 jarfile 吗?或者我可以在启动应用程序时链接它们吗?

4

3 回答 3

2

注意:我已经理解您的问题是在Eclipse之外运行时出现的。

负责加载类的标准 Java 类加载器不理解 jar-files 中的 jar-files,因此您需要执行其他操作:

  • 您可以将您使用的所有 jar 文件中的所有类合并到一个 jar 文件中。(此时推荐给你,不是一般推荐
  • 您可以将 jar 文件放在单个 jar 文件中,并使用可以理解这一点的特殊类加载器。
  • 您可以将引用的 jar 放在包含类文件的单个 jar 文件的“旁边”,并让可运行的 jar 包含引用它们所需的必要 MANIFEST.MF voodo。

Eclipse 中的File->Export->Runnable jar选项可以根据您的选择完成所有三个操作。选择最适合您将课程提供给最终用户的方式。

我个人喜欢“生成的 jar 旁边的 jar”,因为它最接近 Java 开箱即用的支持,同时保留原始 jar 文件。最简单的最有可能合并所有类,但是当你更高级时你会发现它有一些缺点——此时你很可能不会遇到它们。

于 2012-08-26T21:51:30.737 回答
0

在eclipse中添加C3P0作为外部jar

于 2012-08-26T21:30:36.393 回答
0

运行示例时,您似乎没有在类路径中添加 c3p0。

但是,您可以使用 Maven 和 m2e 插件进行 Eclipse 并添加以下内容

 <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
 </dependency>

除了您拥有的其他依赖项之外。

在 mvn eclipse: eclipse 之后,您的项目将具有正确的类路径。

于 2012-08-26T21:37:05.857 回答