Размер XMLConfiguration равен 0 - PullRequest
0 голосов
/ 27 июня 2018
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 это: общий порядок столбцов cat - это файл в jar, в котором есть содержимое.

В чем причина?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

В Java класс File представляет файл в файловой системе ОС. То, что находится внутри jar, отсутствует в файловой системе ОС. К ним нельзя получить доступ через Файл.

Используйте getClass (). GetResourceAsStream () для чтения ваших ресурсов, находящихся в jar / classpath. Если ваша библиотека не поддерживает загрузку содержимого из InputStream, обновите до версии, которая поддерживает.

0 голосов
/ 27 июня 2018

Чтение файлов изнутри jars всегда в чем-то, о чем я должен думать ;-)

Я всегда использую

getClass().getClassLoader().getResourceAsStream(...)

Часть "..AsStream" важна, так как объект файла не может заглянуть внутрь фляги. Я не уверен, какой XMLConfiguration вы используете, но он, скорее всего, имеет конструктор InputStream.

Вы также можете посмотреть , как прочитать файл из файла jar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...