Java:类没有主方法

时间:2015-04-27 00:45:19

标签: java

我无法弄清楚将哪个主方法放在DrawMePanel类中。

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时,它会说 - Class&#34; draw.DrawMePanel&#34;没有主要方法。

运行DrawMe类时,我收到此错误:

运行: java.lang.ClassFormatError:类文件draw / DrawMePanel中的重复字段名称和签名     at java.lang.ClassLoader.defineClass1(Native Method)     at java.lang.ClassLoader.defineClass(ClassLoader.java:760)     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)     at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)     在java.net.URLClassLoader.access $ 100(URLClassLoader.java:73)     在java.net.URLClassLoader $ 1.run(URLClassLoader.java:367)     在java.net.URLClassLoader $ 1.run(URLClassLoader.java:361)     at java.security.AccessController.doPrivileged(Native Method)     在java.net.URLClassLoader.findClass(URLClassLoader.java:360)     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)     at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)     at 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)     在java.lang.Class.getMethod(Class.java:1776)     at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)     在sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 线程&#34; main&#34;中的例外情况Java结果:1 建立成功(总时间:2秒)

3 个答案:

答案 0 :(得分:0)

本能地我相信错误信息。在查看代码时,我认为您可以安全地运行DrawMe。此包含主要方法,并引用/创建DrawMePanel之一。

答案 1 :(得分:0)

如果没有DrawMePanel方法(即Java程序的Entry Point),则无法运行main。目前,您的DrawMe课程采用main()方法。您可以运行它,或将main()方法复制到DrawMePanel(Java项目可以有多个类main()方法)。

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

  

方法main必须声明为publicstaticvoid。它必须指定一个形式参数(§8.4.1),其声明类型为String数组。因此,可以接受以下任一声明:

public static void main(String[] args)

public static void main(String... args)

答案 2 :(得分:0)

将您的main方法放在DrawMe类中。你不需要为main方法提供一个类。在java中,它只是程序开始运行的入口点。