2016-04-28 14 views
0

Zuerst habe ich meinen code probiert, indem ich die ware-datei (mit maven) sowohl auf eclipse als auch auf einem tomcat 8.0.33 stand alone auf meinem mac extrahiert habe.loading ressource funktioniert lokal, aber nicht auf server

Ich habe auch meinen Code auf einem Windows-Server 2008 mit der gleichen Java-Version 1.8 versucht, und es funktioniert, wenn ich einige Variablen (die Benutzername und Passwort sind) fest coded, aber wenn ich den Code zum Lesen von ihnen machen reousrce Datei, es ist nur der Arbeit an meinem mac (beide verdunkeln und Kater stand alone), aber nicht auf dem Server

dies ist der Code, die Ressource

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; 
    } 

wo die Lage des configuration.properties zu lesen ist in der src/main/resources und auf dem Server kann ich sehen, dass die Datei im richtigen Verzeichnis ist.

i maven verwende, ich weiß nicht, was andere Informationen, die Sie mir helfen müssen, aber wenn Sie sagen, werde ich Ihnen

Antwort

1

Sie können versuchen, input = Thread.currentThread().getContextClassLoader().getResourceAsStream("configuration.properties");

+0

sehen keinen Grund, hier eine Datei zu verwenden. Wenn 'configuration.properties' in einem Krieg gebündelt ist, können Sie nicht als Datei darauf zugreifen. Der Grund dafür, dass es in Ihrer IDE funktioniert, ist, dass Sie immer noch als Datei darauf zugreifen können. https://issues.apache.org/jira/browse/SUREFIRE-855 ist damit verbunden, es können Sie jetzt mit dem Artefakt anstelle des Klassenordners testen, genau wie "in Produktion". –

0

Öffnen Sie Ihren Krieg und die JAR-Datei, die Ihre Anwendung enthält. Stellen Sie sicher, dass sich die Ressource, die Sie öffnen möchten, in dem Jar (im Krieg) befindet, das bereitgestellt wird. Meistens ist mir das passiert, weil ich meinen Build-Prozess nicht mitteilen konnte, dass diese Datei in die Bereitstellung kopiert werden muss. Klassendateien werden automatisch, aber nicht immer Ressourcendateien.

+0

sagte, dass ich in der Frage, es ist, ich es genau –

Verwandte Themen