2015-04-27 1 views
0

Я пытаюсь написать программу для LSD (наименьшая значащая цифра) Сортировка графа в Java для сортировки строк фиксированной длины методом сортировки count в определенном положении строки. Он компилируется отлично, но во время выполнения он дает java.lang.NoClassDefFoundError. Я попробовал поиск сети, но пока не получил решения. Поэтому я был бы очень благодарен, если бы кто-нибудь мог указать на мою ошибку. Заранее спасибо!Поясните причину java.lang.NoClassDefFoundError в программе для сортировки LSD сортировки в java

public class LSD 
{ 
    public static void LSDsort(String[] a, int W) // fixed-length W strings 
    { 
     int R = 256; 
     int N = a.length; 
     String[] aux = new String[N]; 

     for (int d = W-1; d >= 0; d--) 
     { 
      int[] count = new int[R+1]; 
      for (int i = 0; i < N; i++) 
       count[a[i].charAt(d) + 1]++; 
      for (int r = 0; r < R; r++) 
       count[r+1] += count[r]; 
      for (int i = 0; i < N; i++) 
       aux[count[a[i].charAt(d)]++] = a[i]; 
      for (int i = 0; i < N; i++) 
       a[i] = aux[i]; 
     } 
    } 

    public static void main (String[] args) 
    { 
     String[] arr = {"11AG3EP04", "11AG30022", "11CS10023", "11EC10015", 
     "12CS3EP01", "10BT3FP01", "14NA10004", "13MF10012"}; 
     LSDsort(arr, 9); 

     for (String s: arr) System.out.println(s); 
    } 
} 
+0

Как вы его запускаете? Это в вашем классе? Повторяется ли это при использовании IDE (например, Eclipse)? – amit

+0

http://stackoverflow.com/questions/34413/why-am-i-getting-a-noclassdeffounderror-in-java – Albert

+0

Amit, я пытался запустить его с помощью командной строки (Windows) - javac LSD.java и java ЛСД. Там проблема возникает. Более того, я попробовал его снова, используя NetBeans, и проблема не отображается. Почему-то не понятно? – Neha

ответ

1

Является LDS класс в package?

Если это так, его необходимо запустить из базового каталога пакета. Я имею в виду, если пакет foo.bar, он должен быть запущен из родительского каталога foo «s:

java -cp . foo.bar.LSD 

Если LSD не имеет пакета, он должен работать так, как ты, запустить из каталога, где находится LSD.class. Вы можете попробовать

java -cp . LSD 

Хотя я думаю, что он должен работать без -cp, так же, как @meskobalazs комментарии:

The default value of the class path is ".", meaning that only the current directory is searched

+0

Текущий рабочий каталог находится в пути к классам в каждой ОС, о которой я знаю. – meskobalazs

1

Нормальная ошибка, когда Java не сталкивается главный класс, это что-то вроде что (моя Java вырабатывает сообщение об ошибке в стране ... что не помогает):

$ java Foobar 
Error: unable to find or load main class Foobar 

Вам следует попытаться перекомпилировать ваш java-файл с помощью javac: он должен создать LSD.class.

javac LSD.java 

Затем попробуйте запустить его снова:

java -cp . LSD 

Кроме того, обеспечить полную трассировку стека, а не только сообщение об ошибке. Он может содержать больше информации.

+0

Спасибо java -cp. ЛСД работает. Но все же у меня есть это мало сомнений. Файл LSD.java хранится в документах (без какого-либо пакета), а файл LSD.class также создается в документах по компиляции, который является текущим каталогом. Тогда почему он не работает без -cp. ? – Neha

+0

Решено. В любом случае спасибо! – Neha

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