Получение ClassNotFoundException, хотя jar находится в пути к классам

Я запускаю приложение Java на экземпляре Amazon EC2, который является сервером Linux. Я включил json jar в путь сборки и проверил путь к классу, и он там. Когда я импортирую класс

import org.json.*;

Я не получаю никаких ошибок компиляции, но когда я запускаю свое приложение, я получаю исключение ClassNotFoundException.

Exception in thread "Thread-1" java.lang.NoClassDefFoundError: org/json/JSONException
    at Group.run(Group.java:62)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.ClassNotFoundException: org.json.JSONException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

Кто-нибудь знает, как это исправить?


person itaied    schedule 17.05.2014    source источник
comment
Во-первых, считается плохой практикой кодирования использовать импорт, например import org.json.*; Измените его, чтобы импортировать org.json.JSONException, и посмотрите, компилируется ли ваш код. Если вы используете eclipse, используйте организацию импорта, чтобы организовать их для вас. Также укажите версию и имя файла jar, который вы включаете.   -  person vkg    schedule 17.05.2014
comment
Очистите и соберите свой проект, скорее всего, сейчас внезапно появится ошибка компиляции, которая помешала вашему файлу класса быть сгенерированным ранее.   -  person Jeroen Vannevel    schedule 17.05.2014
comment
Я изменил его на JSONException, все равно не работает. Я скачал банку отсюда: ссылка. Я также очистил и построить проект, без ошибок компиляции.   -  person itaied    schedule 18.05.2014


Ответы (1)


используйте инструменты декомпилятора java и проверьте, существует ли исключение класса json в вашей банке, или же включите необходимую банку.

person geddamsatish    schedule 17.05.2014
comment
Он существует в банке. - person itaied; 18.05.2014
comment
тогда это может быть случай, когда две банки имеют одно и то же имя класса. Проверьте, есть ли у вас несколько версий json или какой-либо другой банкой с классом jsonexception. Во-вторых, вы можете просто импортировать JSONExcepiton, не делая .* один - person geddamsatish; 18.05.2014
comment
Только один jar ... Я также изменил его, чтобы импортировать только JSONException, все еще не работает. Я попытался использовать другую банку с именем simpleJson, и я получаю то же исключение только с другим именем класса: at Group.run(Group.java:62) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException - person itaied; 18.05.2014
comment
stackoverflow .com/questions/11346180/ проверьте это и json-simple jar - person geddamsatish; 18.05.2014