title: Classpath resource not found when running as jar
body: <p>Having this problem both in Spring Boot 1.1.5 and 1.1.6 - I'm loading a classpath resource using an @Value annotation, which works just fine when I run the application from within STS (3.6.0, Windows). However, when I run a mvn package and then try to run the jar, I get FileNotFound exceptions.</p>
  
  <p>The resource, message.txt, is in src/main/resources. I've inspected the jar and verified that it contains the file "message.txt" at the top level (same level as application.properties).</p>
  
  <p>Here's the application:</p>
  
  <pre class="lang-java prettyprint-override"><code>@Configuration
  @ComponentScan
  @EnableAutoConfiguration
  public class Application implements CommandLineRunner {
  
      private static final Logger logger = Logger.getLogger(Application.class);
  
      @Value("${message.file}")
      private Resource messageResource;
  
      public static void main(String[] args) {
          SpringApplication.run(Application.class, args);
      }
  
      @Override
      public void run(String... arg0) throws Exception {
          // both of these work when running as Spring boot app from STS, but
          // fail after mvn package, and then running as java -jar
          testResource(new ClassPathResource("message.txt"));
          testResource(this.messageResource);
      }
  
      private void testResource(Resource resource) {
          try {
              resource.getFile();
              logger.debug("Found the resource " + resource.getFilename());
          } catch (IOException ex) {
              logger.error(ex.toString());
          }
      }
  }
  </code></pre>
  
  <p>The exception:</p>
  
  <pre><code>c:\Users\glyoder\Documents\workspace-sts-3.5.1.RELEASE\classpath-resource-proble
  m\target&gt;java -jar demo-0.0.1-SNAPSHOT.jar
  
    .   ____          _            __ _ _
   /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
   \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
    '  |____| .__|_| |_|_| |_\__, | / / / /
   =========|_|==============|___/=/_/_/_/
   :: Spring Boot ::        (v1.1.5.RELEASE)
  
  2014-09-16 08:46:34.635  INFO 5976 --- [           main] demo.Application
                    : Starting Application on 8W59XV1 with PID 5976 (C:\Users\glyo
  der\Documents\workspace-sts-3.5.1.RELEASE\classpath-resource-problem\target\demo
  -0.0.1-SNAPSHOT.jar started by glyoder in c:\Users\glyoder\Documents\workspace-s
  ts-3.5.1.RELEASE\classpath-resource-problem\target)
  2014-09-16 08:46:34.640 DEBUG 5976 --- [           main] demo.Application
                    : Running with Spring Boot v1.1.5.RELEASE, Spring v4.0.6.RELEA
  SE
  2014-09-16 08:46:34.681  INFO 5976 --- [           main] s.c.a.AnnotationConfigA
  pplicationContext : Refreshing org.springframework.context.annotation.Annotation
  ConfigApplicationContext@1c77b086: startup date [Tue Sep 16 08:46:34 EDT 2014];
  root of context hierarchy
  2014-09-16 08:46:35.196  INFO 5976 --- [           main] o.s.j.e.a.AnnotationMBe
  anExporter        : Registering beans for JMX exposure on startup
  2014-09-16 08:46:35.210 ERROR 5976 --- [           main] demo.Application
                    : java.io.FileNotFoundException: class path resource [message.
  txt] cannot be resolved to absolute file path because it does not reside in the
  file system: jar:file:/C:/Users/glyoder/Documents/workspace-sts-3.5.1.RELEASE/cl
  asspath-resource-problem/target/demo-0.0.1-SNAPSHOT.jar!/message.txt
  2014-09-16 08:46:35.211 ERROR 5976 --- [           main] demo.Application
                    : java.io.FileNotFoundException: class path resource [message.
  txt] cannot be resolved to absolute file path because it does not reside in the
  file system: jar:file:/C:/Users/glyoder/Documents/workspace-sts-3.5.1.RELEASE/cl
  asspath-resource-problem/target/demo-0.0.1-SNAPSHOT.jar!/message.txt
  2014-09-16 08:46:35.215  INFO 5976 --- [           main] demo.Application
                    : Started Application in 0.965 seconds (JVM running for 1.435)
  
  2014-09-16 08:46:35.217  INFO 5976 --- [       Thread-2] s.c.a.AnnotationConfigA
  pplicationContext : Closing org.springframework.context.annotation.AnnotationCon
  figApplicationContext@1c77b086: startup date [Tue Sep 16 08:46:34 EDT 2014]; roo
  t of context hierarchy
  2014-09-16 08:46:35.218  INFO 5976 --- [       Thread-2] o.s.j.e.a.AnnotationMBe
  anExporter        : Unregistering JMX-exposed beans on shutdown
  </code></pre>