在jar中包含一个jar文件

时间:2012-08-26 21:18:18

标签: java datasource c3p0

我使用c3p0 JAR进行Java保护。在eclipse中编译我的项目。没有错误或什么的。但是当我尝试运行我的应用程序时,它会说:

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

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

3 个答案:

答案 0 :(得分:2)

注意:我已经理解了在外部 Eclipse中运行时的问题。

负责加载类的标准Java类加载器无法理解jar文件中的jar文件,因此您需要做其他事情:

  • 您可以将您使用的所有jar文件中的所有类合并到一个jar文件中。 (此时为您推荐,而不是一般推荐
  • 您可以将jar文件放在单个jar文件中,并使用一个理解它的特殊类加载器。
  • 您可以将引用的jar“下一步”放到包含类文件的单个jar文件中,并让runnable jar包含引用它们所需的MANIFEST.MF voodo。

Eclipse中的File->Export->Runnable jar选项可以根据您的选择完成所有这三个选项。选择一个最适合你如何将课程交给最终用户的人。

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

答案 1 :(得分:0)

在eclipse中添加C3P0作为外部jar

答案 2 :(得分:0)

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

但是你可以使用maven和m2e插件进行eclipse并添加以下内容

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

除了你拥有的其他依赖项。

在mvn eclipse之后:eclipse,你将拥有一个正确类路径的项目。