2016-04-28 6 views
0

Прежде всего, я попытался выполнить мой код, извлекая файл войны (используя maven) как на eclipse, так и на tomcat 8.0.33, отдельно стоящий на моем mac.Загрузка ресурсов работает локально, но не на сервере

Я также пробовал свой код на сервере Windows 2008 с той же версией Java версии 1.8, и он работает, когда я помещаю некоторую переменную (которая является именем пользователя и паролем) жестко закодирована, но когда я делаю код для чтения из reousrce файл, он просто работает на моем Mac (как затмение и кот стоять в одиночку), но не на сервере

это код для чтения ресурса,

private static String getUsername() { 
     Properties prop = new Properties(); 
     InputStream input = null; 

     try { 

      input = new FileInputStream(MyConfiguration.class.getClassLoader() 
        .getResource("configuration.properties").getFile()); 

      // load a properties file 
      prop.load(input); 

      // get the property value and print it out 
      return prop.getProperty("username"); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } finally { 
      if (input != null) { 
       try { 
        input.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return null; 
    } 

где расположение configuration.properties является в src/main/resources и на сервере, я вижу, что файл находится в правильном каталоге.

Я использую Maven, я не знаю, что другая информация, которую вы должны мне помочь, но если вы говорите, я дам вам

ответ

1

Вы можете попробовать input = Thread.currentThread().getContextClassLoader().getResourceAsStream("configuration.properties");

+0

Точно, нет оснований использовать файл здесь. Когда 'configuration.properties' включен в войну, вы не можете получить к ней доступ в виде файла. Причина, по которой он работает в вашей среде IDE, заключается в том, что вы можете получить к нему доступ в виде файла. https://issues.apache.org/jira/browse/SUREFIRE-855 связано с этим, теперь он позволяет вам тестировать с артефактом вместо класса, как «в производстве». –

0

Открыть вашу войну и .jar файл, который содержит приложение. Убедитесь, что ресурс, который вы пытаетесь открыть, находится в банке (на войне), которая развертывается. В большинстве случаев это случалось со мной, потому что я не смог сказать, что мой процесс сборки должен был скопировать этот файл в развертывание. Файлы классов идут автоматически, но не всегда файлы ресурсов.

+0

я сказал в этом вопросе, то есть, я могу видеть это –