我无法弄清楚将哪个主方法放在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秒)
答案 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
必须声明为public
,static
和void
。它必须指定一个形式参数(§8.4.1),其声明类型为String
数组。因此,可以接受以下任一声明:public static void main(String[] args) public static void main(String... args)
答案 2 :(得分:0)
将您的main方法放在DrawMe类中。你不需要为main方法提供一个类。在java中,它只是程序开始运行的入口点。