2010-08-22 19 views
4

Possible Duplicate:
Exception in thread “main” java.lang.NoSuchMethodError: mainИсключение в потоке "основного" java.lang.NoSuchMethodError: главный

Я получил сообщение выше. Код выглядит следующим образом:

class Test 
{ 
public static void main(String ar[]) 
{ 
    printf("hai"); 
} 
} 

Как эта проблема возникла и как ее исправить?

+0

Я смущен, как вы его скомпилировали? Мой тест: 'Sandbox.java:27: не могу найти символ символа: метод printf (java.lang.String)' – TheLQ

+1

@Lord: Это только подтверждает мое подозрение, что он не выполняет класс, который, как он считает, он выполняет :) – BalusC

+0

http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main –

ответ

4

В дополнение к проблеме, которая вызывает текущее исключение (см ответ BalusC в), собственно "Hello World" в Java является:

class Test 
{ 
    public static void main(String[] args) { 
     System.out.println("hai"); 
    } 
} 

См: java.lang.System

+0

Это вызвало бы ** другое ** исключение *, когда * он получил 'main' для запуска. – BalusC

+0

Обычное соглашение, кстати, поместить фигурные скобки на тип declatation :) – BalusC

+1

Из основного [учебника по массивам] (http://download.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html): * Однако , конвенция препятствует этой форме; скобки идентифицируют тип массива и должны появляться с обозначением типа. * – BalusC

1

Я вижу вашу проблему, подпись неверна. Должен быть открытым static void main (String [] args)

+2

Хорошее наблюдение, но не причина. – trashgod

+2

Это, однако, синтаксически ** правильно. – BalusC

+0

@trashgod: Я тоже новичок в Java, и я не знаю, что это можно написать так. В C# это должно быть незаконным. – LLS

6

Класс, который вы пытаетесь выполнить, не имеет метода main.

Поскольку ваш метод main выглядит синтаксически отлично, это может иметь две причины:

  1. Вы выполняющийся неправильный класс.
  2. Фактический файл класса не содержит этот код.

Решение очевидно:

  1. Убедитесь, что ваша команда указывает правильный файл класса, вы можете иметь несколько файлов класса с тем же именем и сидеть в неправильном каталоге.
  2. Убедитесь, что вы скопировали правильный исходный файл в правильный файл класса раньше, вы, возможно, отредактировали его и забыли перекомпилировать.
+0

Теперь я вижу, что вы имели в виду в других комментариях. – trashgod

1

Это может быть проблема с классом, которая заставляет Eclipse запутываться и не сможет найти ваш класс, когда он пытается его запустить. Я бы посмотрел на путь сборки Java в свойствах проекта, чтобы убедиться, что ошибок нет.

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