【问题标题】:XMLConfiguration Size is 0XMLConfiguration 大小为 0
【发布时间】:2018-06-27 11:26:19
【问题描述】:
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 中的文件,里面有内容。

是什么原因?

提前谢谢你。

【问题讨论】:

    标签: java xml xml-configuration


    【解决方案1】:

    从 jar 中读取文件总是我必须考虑的事情 ;-)

    我总是最终使用

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

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

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

    【讨论】:

    • 我确实使用了org.apache.commons.configuration.XMLConfiguration,但它似乎没有具有InputStream 的构造函数。
    • 虽然我认为它确实有一个名为load 的方法,我可以将它用于InputStream
    • 您使用的是旧版本(1.1)请考虑使用较新的版本> = 2.0,它没有更多的文件构造函数并且加载方法现在称为读取。
    【解决方案2】:

    在 Java 中,File 类表示操作系统文件系统中的一个文件。 jar 中的东西不在操作系统的文件系统中。无法通过 File 访问它们。

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

    【讨论】:

      猜你喜欢
      • 2013-08-02
      • 2016-02-09
      • 2012-05-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多