2015-04-27 3 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 (Native Method) на 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) на java.net.URLClassLoader $ 1.run (URLClassLoader.java:367) в java.net.URLClassLoader $ 1.Run (URLClassLoader.java:361) в 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) на java.lang.Class.getDeclaredMethods0 (нативный метод) на java.lang.Class.privateGetDeclaredMethods (Class.java:2693) на java.lang.Class.privateGetMethodRecursive (Class.java:3040) на Java .lang.Class.getMethod0 (Class.java:3010) в java.lang.Class.getMeth od (Class.java:1776) at sun.launcher.LauncherHelper.validateMainClass (LauncherHelper.java:544) at sun.launcher.LauncherHelper.checkAndLoadMain (LauncherHelper.java:526) Исключение в теме "main" Java Результат: 1 BUILD SUCCESSFUL (общее время: 2 секунды)

+3

Запустите класс DrawMe, у этого есть основной метод ... – ryekayo

+2

Является ли это просто мной или не должен DrawMePanel не компилироваться?(вы выполняете код вне исполняемого контекста) – MadProgrammer

+0

Когда я запускаю класс DrawMe, я получаю очень длинную ошибку. Я добавил его к основному вопросу, потому что он слишком длинный для этого комментария. Кажется, что отсутствует метод DrawMePanel DrawMePanel –

ответ

0

Интуитивно я доверяю сообщению об ошибке. И, глядя на ваш код, я думаю, что вы можете запустить DrawMe. Этот содержит основной метод, а ссылки/создает один из DrawMePanel.

+0

Я попытался запустить DrawMe и получил длинную ошибку. Я добавил его к основному вопросу. Кажется, какой-то метод отсутствует от DrawMePanel –

+0

всегда доверяет (самому) последнее сообщение об ошибке! ;) «Дублировать имя и подпись поля в файле draw/DrawMePanel класса» (подсказка: найдите различия между вашим вопросом и текущим кодом) – xerx593

0

Вы не можете запустить DrawMePanel без использования метода main (что является Entry Point вашей Java-программой). В настоящее время ваш класс 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. Вам не нужно иметь класс для основного метода. В java это только точка входа, в которой программа запускается.

Смежные вопросы