Ответ 1
Попробуйте следующее:
java -classpath "$CLASSPATH:nameOfFile.jar:lib/*" path.to.your.MainClass
Что это значит, это установить путь к классу в значение $CLASSPATH
, а также имяOfFile.jar, а также все файлы .jar
в lib/
.
Я написал программу, которая отлично работает на моем ноутбуке, но я действительно хочу, чтобы она работала на сервере, который у меня есть. Используя NetBeans, я очистил и построил проект. Я скопировал содержимое папки dist на моем сервере, но я не могу работать, используя команду
java -jar nameOfFile.jar
Я получаю сообщение об ошибке
java.lang.NoClassDefFoundError: org/....
Я читаю кое-что, и из того, что я собираюсь, я должен в значительной степени указать, где находятся библиотеки, которые я использовал. Ну, они находятся в подпапке под названием lib.
Вопрос:
Итак, что мне нужно сделать, чтобы иметь возможность запускать мою банку?
Попробуйте следующее:
java -classpath "$CLASSPATH:nameOfFile.jar:lib/*" path.to.your.MainClass
Что это значит, это установить путь к классу в значение $CLASSPATH
, а также имяOfFile.jar, а также все файлы .jar
в lib/
.
CLASSPATH - это переменная среды, которая помогает нам обучать виртуальную машину Java, откуда она начнет поиск .class файлов.
Мы должны сохранить корень иерархии пакетов в переменных среды CLASSPATH.
В случае добавления или использования библиотек jar в нашем проекте мы должны поместить местоположение файла jar в переменную среды CLASSPATH.
Пример: Если мы используем jar файл jdbc mysql в нашем проекте java, мы должны обновить местоположение файла jar mysql в переменной среды CLASSPATH. если наш mysql.jar находится в каталоге c:\driver\mysql.jar, то
Мы можем установить путь к классам через DOS в Windows
set CLASSPATH=%CLASSPATH%;c:\driver\mysql.jar
В Linux мы можем сделать
export CLASSPATH=$CLASSPATH:[path of the jar]
Надеюсь, что это поможет!
Q. What is classpath?
Ответ: Classpath - это параметр в виртуальной машине Java или компилятор Java, который specifies the location of user-defined classes and packages.
Параметр может быть установлен либо в командной строке, либо через переменную окружения.
Пути к классам содержат:
JAR файлы и
Пути к вершине иерархии пакетов.
Q.Why we need to set classpath?
Ответ: По сути, classpath tells the location of classes
которых расположены все классы.
Например, иногда нам нужно установить соединение с базой данных, тогда нам нужен jdbc mysql connector jar
.
Q. What is JAR?
JAR (Java Archive) - это формат файла пакета, обычно используемый для объединения многих Java class files
и связанных метаданных и ресурсов (текста, изображений и т.д.) В один файл для распространения прикладного программного обеспечения или библиотек на платформе Java.
Просто JAR: Collection of Classes.
Поэтому, чтобы установить связь с базой данных, мы должны установить местоположение Mysql Jar в переменных Classpath в java.
Вот почему нам нужен classpath в Java.
Вам нужно установить путь к классу с помощью
Ниже приведено bash. Это временный
set CLASSPATH=$CLASSPATH=[put the path here for lib]
Если вы хотите, чтобы он был постоянным, вы можете добавить выше строки в файл ~/.bashrc
export CLASSPATH=$CLASSPATH:[put the path here for lib]:.
Когда вы используете файл META-INF/MANIFEST.MF, чтобы указать зависимости Main-Class, необходимо также указать в манифест.
Переключатель -jar игнорирует всю информацию о других путях - подробнее см. tools.