2012-02-24 63 views
0

Java问题重写acm.program init()方法; Java必须这么难吗?

我是Java的学生。到目前为止,我设法编写了大约15个Java程序,并让他们在PC上工作。但是我还没有编写像我最近分配的init()方法来初始化一些实例变量。编译器告诉我,我的init()方法试图覆盖acm.program中的最终init()方法。那不是init()方法应该做什么?在上周完成了PC上的所有途径之后,我想也许这是PC上的Eclipse问题。 Java文档中的所有示例代码都显示了很少的Mac窗口。所以我想我会尝试将我的代码移到运行Lion 10.7.2的Mac上。

切换到MAC环境。

  1. Mac声称安装了Java,但我认为它只是运行时环境,而不是开发环境。我能找到的所有应用程序都是Java VisualVM,我认为它是虚拟机,所以没有Java开发软件。所以......我从斯坦福大学的网站上下载了Eclipse for Mac,并获得Eclipse IDE for Java Developers Version:Helios Service Release 2,并试图运行一个包含导入语句的简单程序。
  2. import acm.program。*;声明给了编译器一个问题:“acm can not be resolved”。经过研究,我认为问题在于我没有下载acm.jar归档文件,并将其添加到我的构建路径中。为什么这还没有完成,所以我下载了acm.jar文件,它坐在我的下载文件夹中,我试着双击它,幸好mac不会执行它。我试着将它拖到Eclipse中的源代码文件夹中,然后将它添加到构建路径中。一旦进入构建路径,Eclipse会告诉我缺少该jar。因此,我将它从构建路径中移除,然后从Eclipse内部转到属性/ Java Build Path/Libraries /添加外部JARS ...并导航到我的下载文件夹,其中acm.jar文件夹用于选择JAR。但是,Eclipse似乎正在寻找.jar; .zip文件,因为我的Mac已经有效地解压缩文件夹,所以没有.zip文件。所以我改变了打开的窗口来查找所有文件(),现在我看到了单个的.java文件,这些文件太多而无法单独添加到构建路径中。
  3. 所以回到PC并下载acm.jar zip文件并以解压缩的形式将其复制到Mac,然后将其作为zip文件再次添加到构建路径中。这解决了编译器错误和我在Mac上执行的简单程序!
  4. 接下来,我将用init()方法试试我的程序,看看现在是否可行。不。 Mac上的同样的问题。这init方法导致以下错误:多个标记在该行

    • 覆盖acm.program.Program.init
    • 无法从 计划覆盖的最终方法

    公共无效的init(){ canvas = new HangmanCanvas(); add(canvas); }

  5. 难道这一定很难吗?或者我错过了什么?
+0

我遇到过类似的问题,并在ur [full code post] [1]上发布了解决方案。 [1]:http://stackoverflow.com/a/16373402/1598006 – 2013-05-04 10:45:46

回答

0
  1. 通常Mac会安装完整的JDK。不过,Eclipse很好。
  2. 这个“acm”包没有安装,因为它没有任何标准的东西;这就好比问你为什么冰箱里没有芦笋。
  3. 最后的对话是正确的;你需要原始的jar文件。再次尝试,右键单击并选择“另存为...”链接以从浏览器保存文件。
  4. 请参阅3.我觉得特别有趣的是,任何人都会使用Windows计算机来弥补Mac的缺点;实际上,Mac的灵活性更强,功能更强大。
  5. 如果你有一个消息抱怨你试图重写一个final方法,那么你的确在尝试做一些错误的事情; final实际上意味着“你不能覆盖这个。”也许你没有完全理解作业的指示。
  6. 它变得更好,我保证。只要确保将这些烦恼中的每一个都用作学习体验。
+0

谢谢。在Mac上的事情。我开始使用PC,所以我不会消费Mac,因为我的妻子非常使用Mac。但是现在我正在使用Mac来克服个人电脑的缺陷,而不是反过来。但是,现在我发现这两处都出现了错误,所以我不能责怪PC了。关于init()。我把init()方法放在run()方法之外,但放在类中。这是否是它想要初始化我希望其他类可以访问的GCanvas实例的正确位置? – Dana 2012-02-25 00:00:24

+0

@Dana:大多数Java程序员都不熟悉这个“acm.program”包 - 它不是一个标准库 - 所以我们不能仅仅从你对问题的描述中帮助你。我做了一个网络搜索,根据[我发现的一些文档](http://jtf.acm.org/javadoc/student/acm/program/Program.html),acm.program.Program的'init'方法isn最后。我建议你在你的问题中包括你的整个程序(我认为它很短),以便我们可以看到还有什么问题。 – 2012-02-25 00:58:26

+0

@Kevin:整个程序发布在这里:http://stackoverflow.com/questions/9331698/eclipse-is-rejecting-my-public-void-init-method – Dana 2012-02-25 13:34:51

0

没有理由说为什么Java的Java会比PC的Java更好。如果您使用的是相同版本的语言和相似版本的工具,则语言和工具应该工作相同。

init的问题与PC和Mac无关。所以,不要浪费时间切换平台来尝试修复它。你需要弄清楚什么是编译器/ IDE告诉你的是真实情况。 Java不会让你重写一个final方法。实际上整点的声明方法为final是为了防止重载。

但是,这没有意义。根据我发现的文档hereacm.program.Program.init()方法是设计被覆盖。那为什么它不让你呢?

我怀疑问题的原因是您已经下载或获得了某人已经搞混的JAR文件的副本。有人已经将方法改为final(出于某种原因最好是自己),编译它并将其提供给人们下载。谷歌并不总是你的朋友...

因此,我建议你做的是审查所有的讲义和提供的文件,以找到所提供的JAR的副本,或在哪里从它下载。然后将您当前使用的JAR副本替换为推荐的那个。


Why this isn’t already done for me, as part of Eclipse I have no clue. I guess everything has to be difficult.

如何Eclipse的应该知道这是什么 “ACM” 的东西是什么?你需要哪个版本?从哪里下载?

相关问题