Размер XMLConfiguration равен 0
File file = new File( "justskiphere" );
if ( !file.exists() )
{
file =
new File( Thread.currentThread().getContextClassLoader()
.getResource( "general_cat_column_order.xml" ).getFile() );
LOG.info( "Found in the thread" );
}
XMLConfiguration config = null;
try
{
config = new XMLConfiguration( file );
LOG.info( config.getBasePath() );
LOG.info( config.getFileName() );
LOG.info( config.getRootElementName() );
LOG.info( "" + config.getRootNode().getChildren().size() );
}
catch ( final ConfigurationException e )
{
TableColumnHelper.LOG.warn( "Could not find the xml file.", e );
}
Здравствуйте, когда я пытаюсь читать с jar
, Он видит, что файл там, но не получает его содержимое. Итак, результат LOG
наверху есть:
12:58:33,665 [main] [INFO] TableColumnHelper - Found in the thread
12:58:33,701 [main] [INFO] TableColumnHelper - /home/mert/Desktop/inspector-1.0-3/file:/home/mert/Desktop/inspector-1.0-3/groundstation.jar!
12:58:33,701 [main] [INFO] TableColumnHelper - general_cat_column_order.xml
12:58:33,701 [main] [INFO] TableColumnHelper - configuration
12:58:33,701 [main] [INFO] TableColumnHelper - 0
12:58:33,702 [main] [INFO] TableColumnHelper - Items in set: 0
Я не понимаю почему. jar
is: общий порядок столбцов cat - это файл в jar
и в нем есть содержание.
Какова причина?
Заранее спасибо.
2 ответа
Чтение файлов изнутри jars всегда в чем-то, о чем я должен думать;-)
Я всегда заканчиваю тем, что использую
getClass().getClassLoader().getResourceAsStream(...)
Часть "..AsStream" важна, так как объект файла не может заглянуть внутрь фляги. Я не уверен какой XMLConfiguration
вы используете, но он, скорее всего, имеет конструктор InputStream.
Вы также можете посмотреть, как прочитать файл из файла JAR
В Java класс File представляет файл в файловой системе ОС. То, что находится внутри jar, отсутствует в файловой системе ОС. Они не могут быть доступны через файл.
Используйте getClass(). GetResourceAsStream() для чтения ваших ресурсов, которые находятся в jar / classpath. Если ваша библиотека не поддерживает загрузку содержимого из InputStream, обновите до версии, которая поддерживает.