XMLConfiguration 大小为 0

XMLConfiguration Size is 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 是: general cat column order 是 jar 中的文件,里面有内容。

这是什么原因?

提前谢谢你。

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

我总是最终使用

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

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

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

在 Java 中,class 文件表示 OS' 文件系统中的一个文件。罐子里的东西不在 OS' 文件系统中。无法通过文件访问它们。

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