2013-09-24 9 views
-1

Я не могу запустить мою программу java в linux/ubuntu.
Я работаю над этой проблемой целый день и не могу найти никакого решения. Я написал небольшую программу java, используя Eclipse на моей машине с Windows 7, и она работает нормально. Вот мой код:NoClassDefFoundError при запуске java-программы в linux/ubuntu

//start of java program jsonReader 
package jsonReader; 
//imports needed to run program 
import java.io.FileNotFoundException; 
import org.codehaus.jackson.map.*; 
import org.codehaus.jackson.*; 

Для того, чтобы импорт org.codehause.jackson .. работать, мне пришлось вручную включить в мой проект этот файл фляги: ДЖЕКСОНА-все-1.9.11.jar

//class jsonReader 
    public class jsonReader { 
    //start of main 
      public static void main (String[] args) throws FileNotFoundException { 

Остальная часть моей программы, которая работает отлично.

Следующий шаг к моему проекту - запустить его на командной строке Ubuntu. Я сделал экспорт на Eclipses: Файл -> Экспорт -> Общие -> Архивный файл -> и создал Zip-файл.

Этот zip-файл был перенесен в мой linux/ubuntu enviornment. Оттуда я распаковал файл. Это структура каталогов:

в домашнем каталоге у меня есть:

/jsonReader --> has the following directories in it: 
       -/bin/jsonReader/jsonReader.class 
       -/lib/jackson-all-1.9.11.jar 
       -/src/jsonReader/jsonReader.java 
       -.classpath (file); and a few other files. 

В/jsonReader/SRC/jsonReader я запускаю эту команду: JAVAC jsonReader.java -> Я получаю эту ошибку:

jsonReader.java:6: package org.codehaus.jackson.map does not exist 
    import org.codehaus.jackson.map.*; 
    ^
    jsonReader.java:7: package org.codehaus.jackson does not exist 
    import org.codehaus.jackson.*; 
    ^

Затем я запускаю эту команду:

javac -classpath /jsonReader/lib/jackson-all-1.9.11.jar jsonReader.java 

я не получаю никаких ошибок. Эта команда создает файл jsonReader.class в каталоге/src/jsonReader. Я пытаюсь запустить файл с помощью следующей команды:

java jsonReader 

Я получаю эту ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: jsonReader (wrong name: jsonReader/jsonReader) 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
     at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
Could not find the main class: jsonReader. Program will exit. 

Это полное сообщение об ошибке, что я получаю, при запуске этого в командной строке.

Я не уверен, почему я получаю эту ошибку и как ее решить.

ответ

0

Вы должны запустить программу как так

java -cp /jsonReader/lib/jackson-all-1.9.11.jar jsonReader.jsonReader 

Предполагая, что баночка джексон в /jsonReader/lib.

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


Пример, чтобы он мог работать.

Создайте следующую структуру

/project 
    /src 
     /jsonReaderTemp 
      /jsonReader.java 
    /bin 
     /jsonReaderTemp 
      /jsonReader.class 
    /lib 
     /jackson-all-1.9.11.jar 

Вы можете создать его вручную или использовать командную строку, чтобы сделать это до вас.

С выше, cd в project и запустить

java -cp lib/jackson-all-1.9.11.jar;bin jsonReaderTemp.jsonReader 

Обратите внимание на ; как разделитель каталогов путь к классам.


Обратите внимание, что Java конвенции гласит, что имена классов должны начинаться с символа верхнего регистра, так JsonReader и имена пакетов должны быть в нижнем регистре, разделяя слова с ., если вам нужно (но не должно быть слова, как, что).

+0

Здравствуйте, я попробовал запустить эту команду, но это все еще не сработало. Я запустил его из/jsonReader/src/jsonReader (там есть файл .class) И я также запускал его из каталога/jsonReader/src. Оба дали мне ту же ошибку. NoClassDefFound. – user2809181

+0

@ user2809181 Если 'jsonReader.class' находится в' src/jsonReader', т.е. 'src/jsonReader/jsonReader.class', вы должны запустить его из' src'. –

+0

Я все еще получаю ту же ошибку из src. = ( – user2809181

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