XMLConfiguration大小为0

时间:2018-06-27 11:26:19

标签: java xml xml-configuration

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为: general cat column orderjar中的文件,并且其中包含内容。

原因是什么?

先谢谢您。

2 个答案:

答案 0 :(得分:0)

从罐子中读取文件总是需要考虑;-)

我总是最终使用

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

“ .. AsStream”部分很重要,因为文件对象无法在jar中查找。我不确定您使用哪个XMLConfiguration,但是它很可能具有InputStream构造函数。

您可能还想看看how to read a file from a jar file

答案 1 :(得分:0)

在Java中,类File表示操作系统文件系统中的文件。罐子里的东西不在OS的文件系统中。无法通过文件访问它们。

使用getClass()。getResourceAsStream()读取jar / classpath中的资源。如果您的库不支持从InputStream加载内容,请升级到可以的版本。