2012-02-24 31 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」 的東西是什麼?你需要哪個版本?從哪裏下載?

相關問題