无法使用spring批处理从jar访问文件

时间:2016-08-02 08:22:05

标签: java spring spring-batch

我正在使用包含所有依赖项的胖jar的GetFile()。 我的问题是我正在尝试将配置XML发送到bean。现在我明白从java中访问驻留在jar中的文件略有不同,因为你不能使用<bean id="Configuration" class="com.evry.fs.tools.maskng.core.config.Configuration"> <property name="maskConfig"> <value>classpath:mask-configuration-deviations.xml</value> </property> </bean> 但是必须打开它们作为URL资源,所以我改变了我的bean构造函数但是现在它抱怨没有合格的bean对于这种类型

这是我设置bean的XML:

public Configuration(Resource resource) throws ConfigurationException, ParserConfigurationException {
     //Do nothing
}

public void setMaskConfig(Resource resource) throws ConfigurationException, ParserConfigurationException {        
    try {
        InputStream configRes=resource.getInputStream();
        File configFile=new File(resource.getURL().getFile());            
        this.maskConfig=maskConfig;

        if (!(configFile != null && configFile.exists() && configFile.isFile() && configFile.canRead())) {
            throw new IllegalArgumentException("Files does not exist or is not readable: " + configFile.getAbsolutePath());
        }

        logger.info( "Using configuration {}", configFile.getAbsolutePath() );
        XMLConfiguration xmlConfiguration = new XMLConfiguration();
        xmlConfiguration.setRootElementName( "maskng" );    
        xmlConfiguration.setExpressionEngine( new XPathExpressionEngine() );
        xmlConfiguration.setFile( configFile );
        xmlConfiguration.reload();
        xmlConfiguration.setThrowExceptionOnMissing( true );
        xmlConfiguration.load();
        this.hierarchicalConfiguration = xmlConfiguration;
        this.xmlConfiguration = xmlConfiguration;
    } catch(IOException iEx) {
        throw new ConfigurationException("Error creating config: "+iEx);
    }
}

以下是接收它的bean类:

public Configuration(@Value("classpath:mask-configuration-deviations.xml") File configFile) throws ConfigurationException, ParserConfigurationException

我得到的错误是:

  

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为&#39;配置&#39;在URL [jar:file:/data/home/dobbscr/dev/masking/maskng-crd/maskng-batch/target/maskng-batch-1.0-SNAPSHOT-executable.jar!/ META-INF / spring / configuration-中定义context.xml中]:       通过类型为[org.springframework.core.io.Resource]的索引0的构造函数参数表示的不满意的依赖性:找不到依赖的类型[org.springframework.core.io.Resource]的限定bean:预期至少有1个bean符合条件作为此依赖关系的autowire候选者。依赖注释:{};       嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型为[org.springframework.core.io.Resource]的限定bean依赖:预期至少有1个bean符合此依赖关系的autowire候选者。依赖注释:{}

任何帮助表示感谢,因为这让我感到疯狂

仅供参考 - 我已经完成了所有工作,使用来自java main的作业启动器,然后构造函数和函数看起来像这样....当我在jar中使用所有内容时,我被告知不会工作... < / p>

public void setMaskConfig(@Value("classpath:mask-configuration.xml") File configFile) throws ConfigurationException, ParserConfigurationException

onCameraMoveStarted

0 个答案:

没有答案