我有一个带有c3p0 JAR 的 Java 保护。在 Eclipse 中编译我的项目是可行的。没有错误什么的。但是当我尝试运行我的应用程序时,它会显示以下内容:
java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/DataSources
我需要从 c3p0 给 jar 文件另一个 jarfile 吗?或者我可以在启动应用程序时链接它们吗?
我有一个带有c3p0 JAR 的 Java 保护。在 Eclipse 中编译我的项目是可行的。没有错误什么的。但是当我尝试运行我的应用程序时,它会显示以下内容:
java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/DataSources
我需要从 c3p0 给 jar 文件另一个 jarfile 吗?或者我可以在启动应用程序时链接它们吗?
注意:我已经理解您的问题是在Eclipse之外运行时出现的。
负责加载类的标准 Java 类加载器不理解 jar-files 中的 jar-files,因此您需要执行其他操作:
Eclipse 中的File->Export->Runnable jar
选项可以根据您的选择完成所有三个操作。选择最适合您将课程提供给最终用户的方式。
我个人喜欢“生成的 jar 旁边的 jar”,因为它最接近 Java 开箱即用的支持,同时保留原始 jar 文件。最简单的最有可能合并所有类,但是当你更高级时你会发现它有一些缺点——此时你很可能不会遇到它们。
在eclipse中添加C3P0作为外部jar
运行示例时,您似乎没有在类路径中添加 c3p0。
但是,您可以使用 Maven 和 m2e 插件进行 Eclipse 并添加以下内容
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
除了您拥有的其他依赖项之外。
在 mvn eclipse: eclipse 之后,您的项目将具有正确的类路径。