2013-02-18 3 views
2

У меня есть пакетный файл, чтобы установить путь к классу перед вызовом основного метода Java см ниже кодява вопрос путь класса со свойствами файла

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar 
SET CLASSPATH=%CLASSPATH%;/resource 

java -classpath %CLASSPATH% com.xyz.main 

, если я держу свои свойства файл в папке ресурсов она работает нормально, но если я оставлю его в корневой папке, это не сработает.

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar 

java -classpath %CLASSPATH% com.xyz.main 

выше настройка путь класса не работает подводят исключение нулевого указателя

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar 
SET CLASSPATH=%CLASSPATH%;/ 

java -classpath %CLASSPATH% com.xyz.main 

выше настройка пути класса не работает я получает то же исключение нулевого указателя.

Использование с использованием свойств java, как показано ниже.

InputStream inputStream = this.getClass().getResourceAsStream("/abc.properties"); 
    getProperties().load(inputStream); 

будет очень хорошо, если кто-то может помочь мне найти, почему это происходит. заранее спасибо.

ответ

2

Вам необходимо включить «./» в свой CLASSPATH. Вы эффективно говорите JVM, чтобы исключить его.

4

Звонок getResourceAsStream() заставляет Java искать ресурс, доступный для текущего загрузчика классов, то есть тот, который можно найти в вашем пути к классу. Если вы хотите прочитать файл из файловой системы, используйте вместо этого new новый FileInputStream («abc.properties»). Если вы хотите продолжить чтение файла с ресурса, вы должны включить его в свой путь к классам либо в один из ваших файлов jar, либо в виде отдельной записи.

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

BTW посмотрите на jackarata configuration пакет, который имеет эту функцию.

2

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

java -cp .;%CLASSPATH% com.xyz.main 

ПРИМЕЧАНИЕ: ф является сокращением для

классам