2016-04-28 142 views
0

首先,我已經通過在eclipse和tomcat 8.0.33獨立版本的mac上提取war文件(使用maven)來試用我的代碼。加載資源在本地工作,但不在服務器上

我也試過我的代碼在Windows服務器2008年與相同的Java版本1.8,它工作時,我把一些變量(這是用戶名和密碼)硬編碼,但是當我讓代碼讀取它們從一個reousrce文件,它只是我的Mac上工作(Eclipse和單獨的tomcat站),而不是在服務器上

這是代碼讀取資源

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'捆綁在一個war中時,你不能以File的形式訪問它。它在你的IDE中工作的原因是因爲你仍然可以作爲一個文件來訪問它。 https://issues.apache.org/jira/browse/SUREFIRE-855與此相關,它現在允許您使用artifact而不是classfolder進行測試,就像「在製作中」一樣。 –

0

打開你的戰爭,幷包含應用程序的JAR文件。確保您嘗試打開的資源位於正在部署的jar中(在戰爭中)。大多數情況都發生在我身上,這是因爲我沒有告訴我的構建過程需要將該文件複製到部署中。類文件自動進入,但並不總是資源文件。

+0

我在質詢時說,它是存在的,我可以看到它 –

相關問題