2013-09-18 11 views
2

В Java мы устанавливаем путь к классу во время компиляции файлов Java, но зачем нам нужно устанавливать путь к классам во время выполнения? Любая конкретная причина, по которой JVM нуждается в пути к классам для запуска файлов .class?Почему Java требуется classpath во время выполнения

+0

Без этого JVM не знает, где искать классы. –

+0

Это не может быть указано во время компиляции, потому что вы можете развернуть свое программное обеспечение с другой версией на другой машине с разными путями по мере разработки ПК или сервера сборки. –

ответ

5

Файлы на пути к классу предоставляют фактический исполняемый код (в Java .class файлах), который необходимо запустить JVM.

+0

Собственные библиотеки не загружаются через CLASSPATH. – EJP

+0

@EJP Это было слишком долго (достаточно много?), Так как я сделал JNI, и я забыл, что вам нужно извлечь файл самостоятельно. – chrylis

+0

@chrylis, поэтому зависимость класса остается до времени выполнения? – Meet

-1

CLASSPATH - это переменная среды, используемая виртуальной машиной Java для поиска файлов классов (включая основной класс).

В качестве альтернативы вы можете передать -cp или -класса-путь в качестве аргумента виртуальной машины Java для указания пути к классам, где ваш главный класс зависит от.

Например,

export CLASSPATH=/opt/javatv:/opt/mhp:/opt/main-class; 
java MainClass 

(или)

java -cp /opt/javatv;/opt/mhp;/opt/main-class MainClass; 

(или)

java -class-path /opt/javatv;/opt/mhp;/opt/main-class MainClass; 
+0

Я не смог удалить свой случайный клик и может выбрать только +1 или -1. Ваш ответ в порядке на вопрос о том, как использовать classpath. Но вопрос в том, «зачем он нужен во время работы»? – WineGoddess

+0

@WineGoddess JVM использует эту переменную, пытаясь загрузить классы в Runtime. JVM входит в картину только во время выполнения. –

0

В Java мы задаем путь к классам во время компиляции для компиляции Java-файлов

Есть ли у нас? Я не.

но почему нам нужно установить путь к классам во время выполнения?

Таким образом, JVM знает, где можно найти классы.

+0

yes of cource, при компиляции без компилятора classpath дает ошибку. не так ли? Итак, по вашему мнению, почему нам нужно classpath во время компиляции? – Meet

+1

@Meet Компилятору нужен только путь к классу, если в классах, которые компилируются классы, которые не находятся в скомпилированных классах, или их система исходного кода или JDK, есть ссылки. – EJP

+0

да, вы правы, я также имел в виду, что мне нужно classpath во время компиляции только для сторонних банках. – Meet

0

Одна из причин, по которой я вижу, заключается в том, что если мне понадобится по каким-то причинам, чтобы библиотеки, требуемые моим приложением, разбросаны по нескольким точкам монтирования/дискам/разделам или даже папкам, я бы не смог указать JVM где мой код. Как обходной путь, JVM может выглядеть по всей файловой системе и индексированию, но насколько это будет эффективно/быстро?

Приветствие

0

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

Если у вашего кода нет зависимостей, вам не нужно устанавливать путь к классам.

Вам может понадобиться/хочет включить -cp во время выполнения:

  1. Для того чтобы указать, где искать сторонние и пользовательские файлы вашего класса требует во время выполнения (* .jar, * .class , * .properties и т. д.).

  2. Чтобы переопределить переменную среды CLASSPATH.

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