【问题标题】:How to avoid no main class and no class def found error using DropBox and Eclipse for Java如何使用 DropBox 和 Eclipse for Java 避免 no main class 和 no class def found 错误
【发布时间】:2010-02-26 19:12:09
【问题描述】:

我使用 Eclipse 编写 Java 代码,并使用 DropBox 在我们的多台计算机上将我的代码与其他人的代码同步。大多数情况下,一切都按预期进行:如果有人在任一端进行了更改,更改将被保存,当其他人刷新 Eclipse 工作区时,更改会通过并可以成功查看和运行。

有时,会出现几个错误之一。有时 Eclipse 说它找不到主类,有时它说它找不到类本身。有时它不会报告错误,但由于某种原因实际上不会更新 .class 文件,因此即使编译器显示新的源代码并保存,也会运行旧版本。然后我注意到,如果我手动将代码复制到文件系统中其他地方的新 .java 文件中然后编译它,它工作正常,但由于某种原因它拒绝重新生成 .class 文件,我必须删除它手动并用另一个项目中生成的替换它 - 然后它就可以工作了。但是为了解决其他问题,一切都需要手动复制、删除和重新粘贴......

[实际的错误包括 NoClassDefFoundError、UnsupportedClassVersionError 以及其他一些与没有主类有关的错误。]

我意识到这里的描述有些模糊,但不幸的是我并不完全确定发生了什么。我希望我只是遗漏了一些有助于解决所有这些问题的基本事实。

谢谢!

【问题讨论】:

    标签: java eclipse noclassdeffounderror dropbox


    【解决方案1】:

    我相信您在使用 Dropbox 共享源时会遇到问题。

    Eclipse 在上传和下载更新时不知道 Dropbox 在做什么,它们的活动肯定不会同步。在 Eclipse 尝试构建等的任意时间点,它会发现意外活动正在进行,甚至可能是部分下载的源文件,这可能会解释您所看到的特定错误。

    您正在尝试做一些比共享照片或文档更复杂的事情。我给出的建议是使用 git 或 subversion 之类的源代码控制系统来共享和控制源代码。然后,您可以使用旨在以易于使用的方式集成这些系统的 Eclipse 插件。那里有一个学习曲线,但技能会很好地为您服务。

    如果您想像使用 Dropbox 一样将源的共享、备份和版本控制作为服务使用,您可以使用这些解决方案的在线版本,例如 githubunfuddle。它们也是免费的。

    【讨论】:

      【解决方案2】:

      SubversionGit 和所有version control software 为您解决所有这些问题。

      【讨论】:

        【解决方案3】:

        Dropbox 并不是真正适合共享代码的系统。你应该做的是set up a SVN,并且只提交源文件。这样就不会出现此类错误了。

        【讨论】:

          【解决方案4】:

          Dropbox 确实有版本控制(您可以恢复文件的旧版本),并且似乎不是解决问题的可怕方法。我将 Eclipse 存储库保存在 Dropbox 上,以便在任何计算机上都可用;不过因为我自己用的,所以没遇到你的问题。

          在一种情况下,我绝对可以看到您遇到了问题——如果您的类文件也存储在 Dropbox 中。这只会搞砸一切。确保在本地硬盘驱动器上为所有构建工件(类、jar 等)指定一个位置,并且您的 Dropbox 上唯一的东西就是 .java 源代码。

          其实我建议你不要把你的eclipse项目保存在你的dropbox里,只要创建你的eclipse项目,然后把它指向你dropbox里的java文件就行了。

          如果这对您不起作用,请按照其他人所说的在某处设置 SVN 存储库,这比您想象的要容易。

          哦,另一个可能的问题——日期!您可能希望确保您的 java 文件上的日期不会前后跳跃(如果您的开发人员在另一个时区可能会发生这种情况)。在这种情况下,Eclipse 可能不希望重新编译您的文件。

          另外,请尝试强制清理项目,而不是您当前正在执行的复制/等过程。

          对更多信息请求的回应:

          当您启动 Eclipse 时,选择/创建一个不在您的 Dropbox 上的工作区。最好的位置可能不在您的主目录中。如果您已经指定了默认工作区,则文件菜单中应该有一个切换工作区项。

          创建您的项目。选择“从现有源创建项目”并在您的 Dropbox 中指定源文件。我认为您希望“为源文件和类文件创建单独的文件夹”以使您的类文件远离您的保管箱。如果您看到任何内容说“将文件复制到您的工作区,请说“不”。

          这应该会给你一个有效的、有效的项目。希望您不要再看到这些问题。

          还有一件事可能会有所帮助——这可能适用于您现有的项目——无需上述过程...

          每当您刷新文件 (f5) 以从 Dropbox 加载更改时,请选择 Project/clean 菜单并选择项目。这应该会删除所有类文件并重建它们。

          如果您的类文件在 Dropbox 上共享,这仍然会对打开 eclipse 的其他人产生奇怪的后果,所以我真的建议按照我上面所说的重建您的工作区。

          【讨论】:

          • "指定一个位置......并且您的 Dropbox 上唯一的东西就是 .java 源。" “不要将您的 Eclipse 项目保存在您的 Dropbox 中,只需创建您的 Eclipse 项目并将其指向您的 Dropbox 中的 java 文件。”此外,请尝试强制清理项目,而不是您当前正在执行的复制/等过程。 --如果可行,您的解决方案将是理想的。不过,您能否让我知道执行每项引用的操作的详细说明?我认为我知道怎么做,但我不想错过任何一步然后错误地报告它不起作用。谢谢!
          • 好的,谢谢。问题似乎是双重的:第一,在从现有源创建时,我无法选择源/类文件的选项。第二,即使我确实有该选项,当我选择“为源文件和类文件创建单独的文件夹”时,似乎没有办法将“bin”文件夹放在项目目录中的任何位置,这似乎是解决方案的关键部分。我有正确的,还是我错过了什么?谢谢!
          • --嗯,简单地说,只要确保你的 .class 文件不在 Dropbox 上——只有 .java 文件。如果你能做到这一点,那么我相信它不会失败。还要注意,如果两个人同时编辑同一个源,一个人很可能会丢失他们所做的更改——除非他们非常幸运并且可以与 eclipse 保留的历史合并。
          • 好的,我会问是否有人知道让 Eclipse 将文件保存在其他地方的方法;谢谢。
          • 只需在其他地方创建项目本身就可以了,但我还没有实际测试过。当我设置项目时,我确实完成了创建过程,并检查了“为源文件和类文件创建单独的文件夹”选项——在最新版本的 eclipse 创建项目向导中肯定存在。
          【解决方案5】:

          如何避免没有主类

          提供一个。这个问题与 DropBox 无关

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-11-21
            • 2013-08-20
            • 2023-01-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-21
            • 1970-01-01
            相关资源
            最近更新 更多