Получение NoClassDefFoundError для включенного фляги

1

Я пишу приложение java и запускаю его на сервере linux ec2. вчера бегала программа, и после того, как я изменил и организовал некоторые файлы и пакеты, я получаю эту проблему при выполнении программы:

Я запускаю программу с помощью этой команды:

java -cp . main.Server

И получите следующую ошибку:

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/json/JSONObject
    at main.Group.<init>(Group.java:28)
    at main.Server.run(Server.java:23)
Caused by: java.lang.ClassNotFoundException: org.json.JSONObject
    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)
    ... 2 more

Я выполнял программу как это до изменений:

export CLASSPATH=$CLASSPATH:/home/ec2-user/java-json.jar

В папке bin выполните команду:

java Server

И программа работала. Поскольку я изменил пакет с именем по умолчанию на main, мне нужно запустить его с помощью команды java -cp. main.Server java -cp. main.Server, но я получаю ошибку, написанную выше.

Я также пробовал модифицировать .bash_profile и добавить это:

CLASSPATH=$CLASSPATH:/home/ec2-user/java-json.jar
export CLASSPATH

Но это не помогло. У меня нет ошибок в моем коде, и ящик не сломался, так как он работал раньше. Что мне делать, чтобы исправить эту проблему?

Теги:
jar

1 ответ

1
Лучший ответ

Укажите файл jar в пути к классам следующим образом:

java -cp .:/home/ec2-user/java-json.jar main.Server

Если ваш путь к классу действительно правильно установлен в вашем .bash_profile, вы также можете:

java -cp .:$CLASSPATH main.Server
  • 0
    Спасибо, это работает! Знаете ли вы, как включить jar, не записывая его в команду при каждом выполнении? Редактировать: Да, вторая команда прекрасно работает. Спасибо!
  • 2
    Вы можете использовать что-то вроде Maven Assembly Plugin для создания исполняемого файла JAR, который включает в себя все зависимости .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню