2015-04-27 90 views
-2

我無法弄清楚在類DrawMePanel中放置主要方法的位置。Java:類沒有主要方法

package draw; 

import java.awt.Graphics; 
import javax.swing.JPanel; 

public class DrawMePanel extends JPanel 
{ 
    for (int topLeft = 0; topLeft < 80; topLeft += 10) 
    { 
    int radius = 160 - (topLeft * 2); 
    g.drawArc(topLeft + 10, topLeft + 25, radius, radius, 0, 360); 
    } // end for 
} 

下面是與此相關的其他Java類:

package draw; 

import javax.swing.JFrame; 

public class DrawMe extends JFrame 
{ 
    public static void main(String args[]) 
    { 
    // create frame for CirclesJPanel 
     JFrame frame = new JFrame("Draw Me"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     DrawMePanel circlesJPanel = new DrawMePanel(); 
     frame.add(circlesJPanel); // add circlesJPanel to frame 
     frame.setSize(200, 250); // set frame size 
     frame.setVisible(true); // display frame 
    } // end main 
} 

當我嘗試運行DrawMePanel,它says-類「draw.DrawMePanel」沒有一個主要方法。

當運行DrawMe類我收到此錯誤:

運行: java.lang.ClassFormatError:重複字段名&簽名類文件平局/ DrawMePanel 在java.lang.ClassLoader.defineClass1(本機方法) 在需要java.lang.ClassLoader.defineClass(ClassLoader.java:760) 在java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在java.net.URLClassLoader.defineClass(URLClassLoader.java:455) 在java.net.URLClassLoader.access $ 100(URLClassLoader.java:73) at java.net.URLClassLoader $ 1.run( URLClassLoader.java:367) at java.net.URLClassLoader $ 1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java: 360) 在java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) 在java.lang.ClassLoader.loadClass(ClassLoader.java: 357) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2693) at java.lang.Class.privateGetMethodRecursive(Class.java:3040) at java .lang.Class.getMethod0(Class.java:3010) at java.lang.Class.getMeth OD(Class.java:1776) 在sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 在sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 異常線程 「main」 Java結果: 1 構建成功(總時間:2秒)

+3

運行DrawMe類,這有主要方法... – ryekayo

+2

它是隻是我還是不應該DrawMePanel不能編譯?(你正在執行可執行上下文的代碼) – MadProgrammer

+0

當我運行DrawMe類時,出現了一個很長的錯誤。我將它添加到主要問題中,因爲這個評論太長了。似乎有一個方法從DrawMePanel丟失 –

回答

0

本能地,我相信錯誤消息。看着你的代碼,我認爲你可以安全地運行DrawMe。這包含一個主要方法,並參考/創建DrawMePanel之一。

+0

我試圖運行DrawMe,並收到一個長錯誤。我將它添加到主要問題中。 DrawMePanel –

+0

似乎缺少某種方法總是相信(大部分)最新的錯誤信息! ;)「類文件繪製/ DrawMePanel中的重複字段名稱和簽名」(提示:查找您的問題帖子和當前代碼之間的區別) – xerx593

0

如果沒有它的main方法(這是您的Java程序的Entry Point),則無法運行DrawMePanel。目前您的DrawMe課程有main()方法。您可以運行該方法,或者將main()方法複製到DrawMePanel(Java項目可以使用main()方法具有多個類)。

JLS-12.1.4 - Invoke Test.main說部分,

The method main must be declared public , static , and void . It must specify a formal parameter (§8.4.1) whose declared type is array of String . Therefore, either of the following declarations is acceptable:

public static void main(String[] args) 

public static void main(String... args) 
0

把你的主要方法,在你的DrawMe類。你不需要爲main方法創建一個類。在java中,它只是程序開始運行的入口點。