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
中的文件,并且其中包含内容。
原因是什么?
先谢谢您。
答案 0 :(得分:0)
从罐子中读取文件总是需要考虑;-)
我总是最终使用
getClass().getClassLoader().getResourceAsStream(...)
“ .. AsStream”部分很重要,因为文件对象无法在jar中查找。我不确定您使用哪个XMLConfiguration
,但是它很可能具有InputStream构造函数。
答案 1 :(得分:0)
在Java中,类File表示操作系统文件系统中的文件。罐子里的东西不在OS的文件系统中。无法通过文件访问它们。
使用getClass()。getResourceAsStream()读取jar / classpath中的资源。如果您的库不支持从InputStream加载内容,请升级到可以的版本。