【问题标题】:After changing package name I get java.lang.ClassNotFoundException on Eclipse更改包名称后,我在 Eclipse 上得到 java.lang.ClassNotFoundException
【发布时间】:2013-08-26 23:17:29
【问题描述】:

我在 Eclipse 上启动了一个小型 Java 项目,其中包含 (默认包) 中的两个类。 一切正常,但是当我尝试使用相同的两个类(每个类中都有包名称声明)创建一个新包(比如说 net.server)时,我得到:

Exception in thread "main" java.lang.ClassNotFoundException: MyClassName

我没有使用 Java 和 Eclipse 的经验,也不知道是什么原因造成的。

【问题讨论】:

  • 您现在移动的所有东西都在同一个包中吗?您是否使用 Eclipse 重构菜单执行了所有操作?它是一次完成还是多次完成?
  • 是的,现在一切都在同一个包中。我创建了一个新项目并手动复制了这两个类。 Eclipse 不会在代码中显示任何警告或错误。

标签: java eclipse packages


【解决方案1】:

您可能没有更新主文件中的导入(运行main 方法的那个)。 ClassNotFoundException 暗示在给定当前指令的情况下,类加载器找不到某个类。

Eclipse 应该会向您发送有关此问题的警告(用红色强调有问题的导入)。要直接组织给定文件的导入,请在编辑时使用 Ctrl + Shift + O 快捷方式。

【讨论】:

    【解决方案2】:

  • 从不 建议不要使用默认包。作为标准,根包以您的项目命名(例如,如果项目是 net.server.project,则根包具有相同的名称)
  • 注意 Eclipse 在 Move 重构 方面存在问题(我不知道这是否在 Kepler 4.3 中得到修复)
  • 由于您只有两个类,我建议您从头开始创建这两个类,并手动将旧类中的功能复制到新类中。这是确保一切正常的最安全方法。
  • 哦,我希望您的 src 文件夹是一个源文件夹,而不是常规文件夹。

    【讨论】:

    • 我不会说从不,只要你知道自己在做什么就可以了。
    • 一切都与美学有关。
    • 每样东西都有一个建议,你可以把它用于它的目的,或者你可以把它搞砸。这适用于 Java 语言(和其他语言)中的所有内容。再说一次,说永远不会在这里是错误的。我会用(推荐)替换它。以下是 Oracle 所说的:“Java 平台提供未命名的包主要是为了在开发小型或临时应用程序或刚开始开发时提供方便。”
    【解决方案3】:

    我会尝试删除旧的运行配置:从菜单中选择 运行 > 运行配置,在左侧找到您的配置,选择它并单击上面的删除按钮,最后重新运行你的应用程序。

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2016-08-16
      • 2015-11-11
      • 1970-01-01
      相关资源
      最近更新 更多