【问题标题】:JAR file does not load class files from extJAR 文件不从 ext 加载类文件
【发布时间】:2012-09-11 16:56:44
【问题描述】:

我在我的 Linux 系统上安装了 JDK 1.6,$JAVA _HOME 目录是/usr/java/jdk1.6.0_07。 我在 Eclipse 上构建了指向 $JAVA_HOME 的路径。它通过 Eclipse 顺利运行并从 /usr/java/jdk1.6.0_07/jre/lib/ext/ 加载所有第三方 JAR 文件,但是当我导出 JAR 文件并运行它时,它会抛出 ClassNotFoundExecption。

为什么?

【问题讨论】:

  • 我不会使用这么旧的 Java 版本,因为它已经有四年历史了。我会将你的 jar 包含在类路径中。当你说“导出jar文件”时,你在做什么?
  • “从/usr/java/jdk1.6.0_07/jre/lib/ext/加载所有第三方JAR文件”这很奇怪,因为它们本来就不应该在那里。
  • @Peter Lawrey 导出 jar 文件意味着从 eclipse 导出 jar 文件时
  • 所以你正在使用 eclipse 生成一个 JAR。这很好,但您必须确保使用您生成的内容,但设置类路径和/或将其放在正确的目录中。
  • 谢谢@Peter Lawrey,但如果我强制这样做,为什么它不起作用??

标签: java jar classpath


【解决方案1】:
  1. 您是否正确安装了 Java?以下是安装Java 7 或Java 6 的一些说明
  2. 您确定您使用的Java 版本是正确的吗,因为Linux 上可以有多个Java 版本?在您运行它的终端上尝试java -version 进行检查。
  3. 您是否使用任何第三方库?如果是这样,您是否在运行 jar 文件或将它们捆绑到 jar 文件中时指定了类路径?

【讨论】:

  • 嗨@gigadot,感谢您的评论,java -version 返回--java version "1.6.0_07" Java(TM) SE Runtime Environment (build 1.6.0_07-b06) Java HotSpot(TM) Server虚拟机(内部版本 10.0-b23,混合模式)。我是否需要指定放置在 ext 中的 jar 的路径?以及我如何捆绑 jar 文件并在我的 jar 中指定类路径。
  • 你为什么把你的外部jar文件放在ext文件夹中?通常,它们应该在您的项目路径下,以便于组织。您可以在启动应用程序时使用 -cp 参数指定类路径。
  • 谢谢,@gigadot,好的,我从 ext 中删除了 jar,但是如果我需要将这些 jar 放入我的 jar 并且在我运行它时它们会自动构建,该怎么做?
【解决方案2】:

java -version 返回什么?您是否使用相同的 JRE 执行?

【讨论】:

  • 谢谢,java -version 返回 jdk1.6.0_07,是的,我将 eclipse 的 JRE 系统库路径构建到 /usr/java/jdk1.6.0_07
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2017-04-11
  • 2014-12-29
  • 2014-12-26
  • 2012-03-13
  • 2023-03-12
相关资源
最近更新 更多